我有一个子组件( child.component ),可以在两个父组件中使用:
在这种情况下,可以制作如下几个模板:
<parentA>
<child></child>
</parentA>
<parentA>
<parentB>
<child></child>
</parentB>
</parentA>
由于某些原因, child.component 需要检测直接父级是否为parentB。
我使用'@Inject(forwardRef(()=&gt; parentBComponent))private _directParent:parentBComponent'
这样做:
export class ChildComponent {
...
constructor(@Inject(forwardRef(() => parentBComponent)) private _directParent:parentBComponent){
console.dir(_directParent);
}
}
但如果 child.component 未被 parentB.component 包装,我会收到此错误:
“EXCEPTION:http://localhost:3000/app/tests/6.html:5:8导致错误:没有ParentBComponent的提供者!”
我该怎么办?
答案 0 :(得分:0)
对于某些情况,解决方案是让变量 _directParent 可选,感谢装饰器@Optional()
:
@Inject(forwardRef(() => parentBComponent)) @Optional() private _directParent:parentBComponent
如果您只有两个案例,并且在一个案例中没有parentBComponent,那么这是有效的。 但没有获得直接父母,只需获得一个拥有此组件名称的父母。