gpt4 book ai didi

javascript - 我想使用 rxjs subject 来检测多个组件中的值变化。但它只显示改变它的组件的变化

转载 作者:太空狗 更新时间:2023-10-29 19:29:45 24 4
gpt4 key购买 nike

我正在使用不同的模块,因此它可以在延迟加载的模块中使用。这是我的服务文件。

import {NgModule, Injectable } from '@angular/core'
import {Subject} from 'rxjs/Subject';

@Injectable()
export class ChangeEventService {

public invokeEvent:Subject<any> = new Subject();
// localId:any = { name:'', eventId:0, orgId:0};
constructor() {

}

public callComponent(currentId:any):void {
console.log("Invoked");
this.invokeEvent.next({localId:currentId});
}
}

@NgModule({
imports: [ ],
exports : [
],
providers: [ ChangeEventService ],
})
export class ChangeEventModule { }

对 Rxjs 主题的订阅仅在更改它的组件/服务中发生变化。

export class xyz {
constructor(private change: ChangeEventService) {
this.change.invokeEvent.subscribe((value) => {
this.event = value.localId;
console.log("I'm chnaged...!!");
});
}


anyFunction(eventdata:any) {
this.change.callComponent(eventdata);
}
}

我仅在更改 invokeEvent 值的组件中获取更新值。

最佳答案

作为@Philipp 评论说我通过在多个模块中提供它来创建我的服务的多个实例。正如@AngularFrance 所建议的,我在其中声明了 app.module(我的应用程序的第一个模块)的提供者。比我第一次没有在任何订阅中获得更新值(调用 callComponent 的订阅除外)。所以我使用了 BehaviorSubject 并给了它任何随机初始值。所以现在它在初始时间向一个组件发送初始值,而不是在更新时向所有订阅者发送更新值。

所以我想这解决了我的问题。

关于javascript - 我想使用 rxjs subject 来检测多个组件中的值变化。但它只显示改变它的组件的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42270000/

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