如何解决为什么从 Angular 中的 Effect 调用后,Subject 不向组件发出新值?
我正在尝试在服务文件(主题所在的位置)、组件文件(订阅该主题)和效果文件(调用服务文件以更新主题)之间建立通信渠道。
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 举报,一经查实,本站将立刻删除。