【发布时间】:2019-07-25 10:28:04
【问题描述】:
我有一个基本通用组件,我想从基类调用派生方法,该方法返回属于派生类的数据。
第一个问题是,我不能在抽象类中将其定义为静态的!
第二个问题是,当我在基类泛型类中使用 {} 作为 TDomain 创建派生类的新实例时,它的空和方法返回 null 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
}
【问题讨论】:
标签: angular typescript generic-programming