【发布时间】:2019-08-17 10:16:02
【问题描述】:
这更像是一个理论问题,因为我手头没有代码,但我认为仍然可以回答。
我有一个服务 (MsgService) 负责向组件提供 msg-s。当我使用与此类似的方法从其中一个组件更新/设置服务的 msg-s 时:
myMethod(data) {
this.myMethodSubject.next(data);
}
新的 msg-s 不可见,但只有在我刷新页面后才可见。我想看到在所有组件(订阅它的)和视图上立即调用next 的结果,但我需要刷新页面一次以使结果可见。这可能是什么原因?或者更笼统地说——在什么情况下Next 和订阅的结果是可见的?
(顺便说一句:我正在调用从 NgOnInit 给我 msg-s 的 subscribe 方法,我应该把它放在其他地方吗?)
编辑:我从其中一个组件订阅的内容如下所示:
ngOnInit() { this.msgService.getMsgParams().subscribe(data => { this.params = data; });
this.msgService.getMsgs (this.params.category, this.params.price, this.params.title).subscribe(data => this.msgs = data);
}
到目前为止,我还没有退订,这与问题有关吗?
【问题讨论】:
-
您是如何处理订阅的?数据应立即可用。你也取消订阅吗?也许组件中的一些代码会提供一些见解
-
最可能的原因是您没有将变量数据放入订阅函数
-
没有代码就无法回答,还有什么困扰我的是刷新后你看到这意味着你正在保存和重新加载数据。
-
@Ric 我还没有退订,可以改变吗?我在上面发布了代码(至少我记得的)。谢谢你的建议!
-
@Eliseo,我不确定我是否理解相等的含义。我之后发布的编辑代码会这样做吗?无论如何谢谢你!
标签: angular rxjs observable subject