gpt4 book ai didi

angular - 捕获从注入(inject)组件的服务发出的事件

转载 作者:行者123 更新时间:2023-12-02 16:49:49 25 4
gpt4 key购买 nike

我通过依赖注入(inject)插入了一个服务组件(组件A),并且这个服务组件A不在组件B的模板内。

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

@Output() hostReady = new EventEmitter();

我像这样发出事件:

hostReady.emit();

我需要做什么才能在父级中捕获它?

最佳答案

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

从'rxjs/Subject'导入{Subject};

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

selectedLanguage: Subject<string>;
constructor() {
this.selectedLanguage = new Subject<any>();
}

然后,每个组件(也注入(inject)了此依赖项)都可以使用以下方法触发该事件:

this.intercomm.selectedLanguage.next(language);

每个订阅者组件都会将此作为对该事件的订阅,即在构造函数中,订阅者将注入(inject)该依赖项,并将观察其事件:

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

关于angular - 捕获从注入(inject)组件的服务发出的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42691870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com