Necesito escuchar un evento de una serie de componentes de pestañas. Estas pestañas emiten "onMinimized", sin embargo, preferiría conectar estos eventos en una línea de código que ingresar (onMinimized)="hide" para cada entrada de componente de pestaña en la plantilla. Hay una matriz de ContentChildren que tengo que puedo recorrer.
Quiero hacer algo similar a lo siguiente en el padre:
@ContentChildren(TabComponent) tabs: QueryList<TabComponent>; ... ngAfterContentInit() { this.tabs.map((t: TabComponent) => { t.addEventListener("onMinimized", this.hide); }); } hide() { // hide tabs }¿Pensamientos?
Lo descubrí después de algunas pruebas y errores.
ngAfterContentInit() { this.tabs.map((t: TabComponent) => { t.minimizeTab.subscribe(() => { this.hide(); }) }); }La forma de abordar el problema era considerar que el componente tenía una propiedad que era un EventEmitter (al igual que todas las salidas angulares). Los EventEmitters son observables, por lo que simplemente puede suscribirse al flujo de eventos.