我已经通过依赖项注入插入了服务组件(组件A),并且此服务组件A不在组件b。
的模板中如何捕获从服务组件发出的事件 - 如何在父级组件(组件B)中捕获它?我已经将发射命令放入子部分中:
@Output() hostReady = new EventEmitter();
我正在这样的事件如此:
hostReady.emit();
为了在父母中抓住它,我需要做什么?
好吧,由于我以前没有发布解决方案,所以我现在也可以这样做。因此,我所做的是我实施了模式订户。所有想了解事件的组件都订阅了该事件,当事件触发时,他们就知道了。该解决方案处理RXJS对象:
import { Subject } from 'rxjs/Subject';
我有一个特殊的组件intercommService
,该组件将事件声明为RXJS主题,例如:
selectedLanguage: Subject<string>;
constructor() {
this.selectedLanguage = new Subject<any>();
}
然后,使用以下方式可以触发每个组件(也具有此依赖项)可以触发事件:
this.intercomm.selectedLanguage.next(language);
,每个订户组件将其作为对该事件的订阅,即在构造函数中,订户将具有该依赖项注入,并将观察其事件:
constructor(private intercomm: IntercommService) {
this.intercomm.selectedLanguage.asObservable().subscribe((value: any) => {
// Do something with value
});
}
有不同的方法。
在食谱示例中查看。
https://angular.io/docs/ts/latest/cookbook/component-communication.html#! #child-to-parent