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