如何在不通过模板连接的情况下收听ContentChild事件?

时间:2017-04-24 19:27:45

标签: angular

我需要从一组标签组件中侦听一个事件。这些选项卡发出“onMinimized”,但我宁愿在一行代码中连接这些事件,而不是为模板中的每个选项卡组件条目输入(onMinimized)="hide"。我有一个ContentChildren数组,我可以循环使用。

我想在父母身上做类似的事情:

@ContentChildren(TabComponent) tabs: QueryList<TabComponent>;

...

ngAfterContentInit() {
  this.tabs.map((t: TabComponent) => {
    t.addEventListener("onMinimized", this.hide);
  });
}

hide() {
  // hide tabs
}

思考?

1 个答案:

答案 0 :(得分:3)

经过一些试验和错误后计算出来。

  ngAfterContentInit() {
    this.tabs.map((t: TabComponent) => {
      t.minimizeTab.subscribe(() => { this.hide(); })
    });
  }

解决问题的方法是考虑组件有一个属性,它是一个EventEmitter(就像所有角度输出一样)。 EventEmitters是可观察的,因此您只需订阅事件流。