用于检查父组件的Angular 2 Child组件

时间:2016-11-01 13:11:46

标签: angular angular2-components

我想要实现的是基于哪个组件是其父组件的组件的不同行为。因此,在以下两种情况下,孩子的行为会略有不同。

示例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

有没有办法实现这样的目标?

1 个答案:

答案 0 :(得分:2)

如果您需要实际组件(而不是节点元素),则可以使用进样器。

constructor(private parentB: ParentBComponent){
}

ngAfterViewInit() {
  this.parentB.someMethod()
}

请注意,您有parent-aparent-b,如果您希望能够注入任何内容,请定义一个基本组件并同时继承parent-aparent-b

您可以将其设为可选,您可以使用Optional装饰器:

constructor(@Optional() private parentB?: ParentBComponent){
}