我想要实现的是基于哪个组件是其父组件的组件的不同行为。因此,在以下两种情况下,孩子的行为会略有不同。
示例A
<parent-a>
<child></child>
</parent-a>
例B
<parent-b>
<child></child>
</parent-b>
我尝试了以下
constructor(
el: ElementRef) {
this.el = el;
}
ngAfterViewInit() {
const hostElem = this.el.nativeElement;
console.log(hostElem);
console.log(hostElem.children);
console.log(hostElem.parentNode);
}
尽管ngAfterViewInit对我来说有点晚了,但我在parentNode上仍然为null
有没有办法实现这样的目标?
答案 0 :(得分:2)
如果您需要实际组件(而不是节点元素),则可以使用进样器。
constructor(private parentB: ParentBComponent){
}
ngAfterViewInit() {
this.parentB.someMethod()
}
请注意,您有parent-a
和parent-b
,如果您希望能够注入任何内容,请定义一个基本组件并同时继承parent-a
和parent-b
您可以将其设为可选,您可以使用Optional
装饰器:
constructor(@Optional() private parentB?: ParentBComponent){
}