Вопреки всему, что я читал, мне кажется не удается расширить класс, где базовому классу требуется вводимая ссылка OpaqueToken.Невозможно расширить суперкласс при использовании @Inject с угловым 2
Пример:
@Component({})
export class StructureBase_Cmp {
constructor(private constants:App_Const){
}
}
В этом примере App_Const
происходит от OpaqueToken, который предусмотрен в модуле, как например:
providers: [
{provide: App_Const, useValue: Constants}
],
Я знаю, что по какой-то причине вам нужно позвонить @ Inject, изменив таким образом первый пример:
@Component({})
export class StructureBase_Cmp {
constructor(@Inject(App_Const) private constants){
}
}
Эта работа хорошо. Что не работает нормально пытается продлить этот класс, потому что он жалуется, что «частные константы» имеет другой тип в производном классе:
@Component({})
export class Hero_Cmp extends StructureBase_Cmp{
constructor(@Inject(App_Const) protected constants) {
super(constants);
}
}
Однако, я не могу изменить суперкласс к этому:
@Component({})
export class StructureBase_Cmp {
constructor(private constants:App_Const){
}
}
потому что .... что, App_Const является непрозрачным, а не определенным типом? Несмотря на документы, я очень смущен, потому что это похоже на какой-то вкус, который должен работать прямо из коробки.
tldr: Я хочу расширить класс, для которого требуется введенный элемент, который является производным от OpaqueToken, однако для этого мне нужно использовать @Inject для производного класса, который по какой-либо причине разбивает родительский класс ,
Любая помощь приветствуется. Благодарю.
Вы пробовали использовать другое имя параметра в 'Hero_Cmp'? как конструктор (@Inject (App_Const) protected appConstants) {super (appConstants); } ' – yurzui