重新加载组件时保留可观察的值

时间:2017-12-29 06:49:39

标签: angular asynchronous react-redux rxjs observable

我有一个有角度的应用程序(v5)。在其中一个页面上有两个组件(A和B)。组件A具有网格,该网格在单元格单击时将单元格值推送到rxjs主题。组件B订阅该主题并相应地刷新其内容。此流程按预期工作,直到组件B移动到不同的路由器链接。

在幕后我可以看到,当单击组件A上的单元格时,组件B确实被通知了其订阅(下一个)处理程序的更改。注意那时组件B还不可见。当通过routerlink使组件B可见时,单击它的UI不会反映主题中的值(可观察)。

  1. '可见性'是问题吗?
  2. routerlink click会导致组件B重新加载并丢失从主题中捕获的数据吗?
  3. 主题不是正确的类型,以促进此类沟通?我知道routerlink可以有参数,但这不是我需要的。除了组件A之外,对主题的更新可以来自不同的来源。组件B需要反映来自主题的最新信息。
  4. 实现跨组件异步通信的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您应该在此方案中使用BehaviourSubject。 BehaviourSubject发出最后一个值。因此,当您在组件B中订阅时,它将接收组件A发出的最后一个值。

希望它会有所帮助