[英]Catch event emitted from service injected into component
我已经通过依赖关系注入插入了一个服务组件(组件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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.