Можно ли ввести шаблонную зависимость? - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь внедрить шаблонную службу в базовый класс;класс, производный от этого, определяет конкретный класс шаблона, но у меня возникают проблемы с внедрением этого сервиса без необходимости указания внедрения в производном конструкторе.

Что работает:

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., возможнопотому что я пытаюсь использовать шаблон.

...