У меня есть базовый универсальный компонент, и я хочу вызвать производный метод из базового класса, который возвращает данные, принадлежащие производному классу.
Первая проблема заключается в том, что я не могу определить его статическим в абстрактном классе!
Вторая проблема заключается в том, что когда я создаю новый экземпляр производного класса с {} в качестве TDomain внутри базового универсального класса, его пустой и метод возвращают нулевую ошибку ref!
Базовый объект выглядит так:
export abstract class BaseEntity
{
abstract getColumns():string[];
}
Моя модель выглядит следующим образом:
export class Person extends BaseEntity
{
getColumns() {
return ["Id", "Name"];
}
}
У меня есть базовый базовый компонент:
@Component({
selector: 'base-component',
templateUrl: './base.component.html',
styleUrls: ['./base.component.css']
})
export class BaseComponent<TDomain extends BaseEntity,TService extends DataService > implements OnInit {
data:any[];
constructor() {
}
ExportToExcel(): void {
//must create an instance of derived class
//then call getcolumns method of it
let obj = {} as TDomain; // but its empty doesnt work
ExcelService.export(obj.getcolumns(this.data));
}
}
и производный компонент:
@Component({
selector: 'Derived-Cmp',
templateUrl: './derived.component.html',
styleUrls: ['./derived.component.css']
})
export class DerivedComponent extends BaseCrudComponent<Person,PersonService> implements OnInit {
//ExportToExcel Method called form html
}