繁体   English   中英

从服务注入组件发出的捕获事件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM