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

Angular 捕获从注入组件的服务发出的事件,angular,event-handling,components,parent-child,Angular,Event Handling,Components,Parent Child,我已经通过依赖注入插入了一个服务组件(组件a),该服务组件a不在组件B的模板内 如何捕获从服务组件发出的事件-如何在父组件(组件B)内捕获它?我已经在子组件中放置了发射命令,如下所示: @Output() hostReady = new EventEmitter(); hostReady.emit(); 我发出这样的信号: @Output() hostReady = new EventEmitter(); hostReady.emit(); 我需要做什么才能在家长中捕捉到它?有不同的方法

我已经通过依赖注入插入了一个服务组件(组件a),该服务组件a不在组件B的模板内

如何捕获从服务组件发出的事件-如何在父组件(组件B)内捕获它?我已经在子组件中放置了发射命令,如下所示:

@Output() hostReady = new EventEmitter();
hostReady.emit();
我发出这样的信号:

@Output() hostReady = new EventEmitter();
hostReady.emit();

我需要做什么才能在家长中捕捉到它?

有不同的方法

看看烹饪书中的例子


好吧,既然我以前没有发布过我的解决方案,我不妨现在就发布。所以,我所做的是实现了一个模式订户。所有想要了解某个事件的组件都已订阅该事件,并且在触发某个事件时,它们都知道该事件。该解决方案处理rxjs对象:

从'rxjs/Subject'导入{Subject}

我有一个特殊组件
intercommService
,它将事件声明为rxjs主题,如下所示:

selectedLanguage: Subject<string>;
constructor() {
    this.selectedLanguage = new Subject<any>(); 
}
每个订阅服务器组件都将此作为其对该事件的订阅,即在构造函数中,订阅服务器将注入该依赖项,并观察其事件:

constructor(private intercomm: IntercommService) {
    this.intercomm.selectedLanguage.asObservable().subscribe((value: any) => {
        // Do something with value
    });
}

我所能看到的只是在父组件的模板中存在子组件的情况。我指的是父组件仅在.ts类代码中,因此未定义子组件的模板。在这种情况下,我不需要子组件的模板,所以它不是一个真正的子组件。您需要使用类似的服务。好的,我将重新表述问题和问题标题。有一个组件和一个服务。我需要从组件中处理的服务发出一个事件。