Я пытаюсь внедрить шаблонную службу в базовый класс;класс, производный от этого, определяет конкретный класс шаблона, но у меня возникают проблемы с внедрением этого сервиса без необходимости указания внедрения в производном конструкторе.
Что работает:
export abstract class BaseDataTableComponent<IDataService> {
constructor(private iDataService: IDataService) {}
}
export class DerivedDataTableComponent extends BaseDataTableComponent<SpecificService> {
constructor (private service: SpecificService) {
super(service)
}
}
Что я хотел бы сделать:
export abstract class BaseDataTableComponent<SpecificService> {
constructor(private iDataService: IDataService) {}
}
export class DerivedDataTableComponent extends BaseDataTableComponent<SpecificService> {
}
Я пытался переместить инъекцию внутри конструктора, используя Инжектор
export abstract class BaseDataTableComponent<IDataService> {
constructor() {
const injector = Injector.create({providers: [
{provide: IDataService, deps: []}
]});
this.iDataService = injector.get<IDataService>(IDataService);
}
}
, но я получаю ошибку 'IDataService' only refers to a type, but is being used as a value here.
, возможнопотому что я пытаюсь использовать шаблон.