Я пытаюсь решить следующую ситуацию:
У меня есть дочерний компонент, который будет использоваться в нескольких родительских компонентах, но этот дочерний компонент должен иметь доступ к родительскому компоненту (а именно к его информации parenComponent.constructor по адресу время выполнения).
В такой структуре
<BucketComponent>
<ParentA>
<ChildComponent>
</ParentA>
<ParentB>
<ChildComponent>
</ParentB>
<BuccketComponent>
До того, как этот ChildComponent был передан родителям, я сделал следующее
ChildComponentCode
component({
selector: 'childComponent'
})
export class ChildComponent extends BaseClass<model> implements OnInit, OnDestroy {
constructor(@Inject(ParentComponentClass) parent: Component) {
super(parent);
}
и это сработало.
Но когда я попытался поделиться им следующим образом:
const token = new InjectionToken<Component>('ParentComponentToken')
component({
selector: 'childComponent',
providers: [
{ provide: token , useClass: ParentComponentClassA},
{ provide : token , useClass : ParentComponentClassB}]
})
export class ChildComponent extends BaseClass<model> implements OnInit, OnDestroy {
constructor(@Inject(token) parent: Component) {
super(parent);
}
В одном из случаев childcomponent я получил правильную ссылку на своего родителя, но не в другом (выглядит мне нравится, что он всегда ссылается на один из двух)
Кстати, супер (родитель); это то, что использует информацию parentComponent.constructor.
Дополнительно я уже пытался использовать @Self () и @Host до @Inject (), но безрезультатно.
Любая помощь в том, как я может сделать так, чтобы только родитель, где есть ребенок, был предоставлен / введен, оценен.
Заранее спасибо