【发布时间】:2017-01-05 18:05:54
【问题描述】:
对不起我的英语。我有在主模块中提供的服务。何时使用setSettings 方法更改this.userSettings 对象我希望调用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
【问题讨论】:
-
问题不清楚。当您 userSettingObserver.next 时,问题是不是所有订阅者都能获得价值?
-
是的,你是对的。我有几个组件在其中完成了订阅。如果我在 Chrome 开发者控制台中设置断点,那么只有一个(最后订阅的)组件脚本执行会停止。
-
你是在注入还是导入服务?
-
另外,你是从哪里调用 setSettings 的?
-
您是在注入还是导入服务?我不知道它是如何正确调用的。在我写这个的组件中: constructor(private userSettingsService: UserSettingsService) setSettings 我在组件中调用,例如当用户点击设置菜单中的项目时
标签: angular observable