У меня есть несколько различных угловых компонентов.Также во многих этих компонентах есть компонент базового списка.
Например: у VegetablesComponents есть BaseListComponent, у FruitsComponent есть BaseListComponent и т. Д. Конечно же, внутри компонентов Vegetables / Fruits есть и другие дочерние компоненты.
BaseListComponent получает некоторые данные, которые изменяют некоторые функции из родительского компонента (VegetablesComponent, FruitsComponent).Это было сделано с помощью @Input () для BaseListComponent.
Итак, я понял, что VegetablesComponent, FruitsComponent может расширять тот же класс.И я мог бы внедрить родительский компонент внутри BaseListComponent.Скажем:
VegetablesComponents extends HasBaseFunctionality {}
А затем внутри BaseListComponent я бы использовал конструктор (parent: HasBaseFunctionality, ...).
Это уменьшило бы количество входных данных, которые потребуются для BaseListкомпонент, и это будет выглядеть намного чище.
Но как только я попытался сделать это, я получил:
StaticInjectorError(AppModule)[ChildComponentComponent ->
BaseComponentComponent]:
StaticInjectorError(Platform: core)[ChildComponentComponent ->
BaseComponentComponent]:
NullInjectorError: No provider for BaseComponentComponent!
Если бы я использовал:
constructor(parent: VegetablesComponent) {...}
Это будет работать.
Поэтому мне было интересно, есть ли способ сделать это без использования службы, для которой я зарегистрирую текущий базовый компонент после инициализации, а затем получу доступ к его значениям с помощью службы.