Angular 2子组件检查父组件

标签 angular angular2-components

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

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

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

最佳答案

如果您需要实际的组件(而不是节点元素),您可以使用注入(inject)器。

constructor(private parentB: ParentBComponent){
}

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

请注意,您有 parent-aparent-b ,如果您希望能够注入(inject)任何内容,请定义一个基础组件并同时拥有 parent-aparent-b从中继承。

您可以将其设为可选,您可以使用 Optional装饰师:
constructor(@Optional() private parentB?: ParentBComponent){
} 

关于Angular 2子组件检查父组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40360793/

相关文章:

angularfire2 在保存模型对象之前获取新的 pushid

Angular2 RC5 WebPack ngRx 模块热替换

javascript - Angular 2 : using [class. someClass] 导致 `No provider for ControlContainer!` ?

Angular2 - 是否可以使用选择器名称获取组件类名称

angular - 如何在子组件中触发点击事件?

angularjs - Angular2应用的配置——nginx和docker

javascript - 电话号码格式的正则表达式(不超过 10 位数字),不接受 0 或 1 作为第一个数字

Angular 2 组件 : child to child communication

Angular - 组件中 module.id 的含义是什么?

javascript - Angular2 访问父组件的@input 值