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

Angular 如何在不通过模板连接的情况下侦听ContentChild事件?,angular,Angular,我需要从选项卡组件数组中侦听事件。这些选项卡发出“onMinimized”,但是我宁愿在一行代码中连接这些事件,也不愿为模板中的每个选项卡组件条目输入(onMinimized)=“hide”。我有一个ContentChildren数组,可以循环使用 我想在家长中做一些类似的事情: @ContentChildren(TabComponent) tabs: QueryList<TabComponent>; ... ngAfterContentInit() { this.tabs.

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

我想在家长中做一些类似的事情:

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

...

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

hide() {
  // hide tabs
}
@ContentChildren(TabComponent)选项卡:QueryList;
...
ngAfterContentInit(){
this.tabs.map((t:TabComponent)=>{
t、 addEventListener(“onMinimized”,this.hide);
});
}
隐藏(){
//隐藏标签
}

想法

经过一番尝试和错误后,终于找到了答案

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

处理这个问题的方法是考虑该组件具有一个属性,它是一个事件发射器(就像所有的角输出一样)。EventEmitter是可观察的,因此您可以简单地订阅事件流。

是否最小化?是否自定义事件发射器?因为你可以用代码订阅它。但有一个问题-既然tabs是一个数组,那么您不是在该数组中循环创建TabComponents吗?或者您是以不同的方式创建选项卡吗?每个选项卡都是在模板中定义的(尽管我想它们可能是在一个数组中)。如何通过ContentChild引用为ContentChild的角度“输出”创建事件侦听器?找到了这一点,但这并不是我想要的。您可以发布其中一个选项卡的组件代码吗?