对不起我的英语不好 . 我有主要模块提供的服务 . 什么时候发生改变 this.userSettings
对象使用 setSettings
方法我希望 userSettingsObservable
上的所有订阅者都被调用 . 通过在此服务中调用 getSettingsObservable
方法,订阅发生在不同的组件中 .
constructor() {
this.userSettingsObservable = new Observable((observer: Observer<UserSettings>) => {
this.userSettingsObserver = observer;
});
}
getSettingsObservable() {
return this.userSettingsObservable;
}
setSettings(path: string) {
this.userSettings = _.set(this.userSettings, path, value);
this.userSettingsObserver.next(_.clone(this.userSettings));
}
组件中Observable的订阅示例:
ngOnInit() {
this.userSettingsService.getSettingsObservable().subscribe(
(userSettings) => {
this.userSettings = userSettings;
}
);
}
在我的情况下,订阅仅在最后订阅的组件上调用 . 如何在我订阅的所有组件中进行订阅调用?
谢谢!
附:你可以在这里看到完整的服务代码:https://github.com/pakhuta/siarhei.pakhuta.angular2/blob/master/src/app/shared/user-settings.service.ts#L41
1 回答
我的猜测是它是一个计时问题,并且在其他组件订阅之前,observable正在完成 .
最简单的解决方案是使用
BehaviorSubject
或ReplaySubject
而不是常规的observable .然后 :