问题描述
我正在尝试在服务文件(主题所在的位置)、组件文件(订阅该主题)和效果文件(调用服务文件以更新主题)之间建立通信渠道。
Figure 1 - The problem described
问题是,当我从服务文件订阅主题时,我希望获得从效果文件发送的最新值,但如图 1 所示,我很难在组件中接收该值。
组件文件:
this.subscription$ = this.service.getValue().subscribe(( value: boolean ) => {
console.log("value received: ",value);
})
// ...
public onClickAction(): void { this.service.execute(...parameters) }
服务文件:
private subject$: Subject<boolean>;
constructor() { this.subject$ = new Subject() }
// ...
public setValue(value: boolean): void { this.subject.next(value) }
// ...
public getValue(): Observable<boolean> { return this.subject$ }
// ...
public execute(...parameters): void { this.store.dispatch(action) }
action$ = createEffect(() => {
//...
this.service.setValue(true)
})
有人可以向我解释为什么我没有收到来自主题的任何更新吗?另一种解决方案是在效果文件中注册主题,但这对我来说并不合适,而且我真的很想了解为什么这不起作用。
非常感谢!
已编辑:我已在 StackBlitz 上复制了此问题,并且正在那里工作。我仍然不知道为什么它在我们的项目中不起作用,也许我在处理效果时没有考虑到一些东西。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)