Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 重新加载组件时保留可观察值_Angular_Asynchronous_React Redux_Rxjs_Observable - Fatal编程技术网

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

Angular 重新加载组件时保留可观察值,angular,asynchronous,react-redux,rxjs,observable,Angular,Asynchronous,React Redux,Rxjs,Observable,我有一个angular应用程序(v5)。其中一页上有两个组件(A和B)。组件A有一个网格,在单元格单击时,该网格将单元格值推送到rxjs主题。组件B订阅了该主题并相应地刷新其内容。此流按预期工作,直到组件B移动到其他routerlink 从引擎盖下面看,我可以看到当点击组件A上的单元格时,组件B确实收到了订阅(next)处理程序更改的通知。注意,此时组件B还不可见。当组件B通过routerlink点击进入可视状态时,其UI不会反映主题中的值(可观察) “可见性”是问题吗 routerlink单击

我有一个angular应用程序(v5)。其中一页上有两个组件(A和B)。组件A有一个网格,在单元格单击时,该网格将单元格值推送到rxjs主题。组件B订阅了该主题并相应地刷新其内容。此流按预期工作,直到组件B移动到其他routerlink

从引擎盖下面看,我可以看到当点击组件A上的单元格时,组件B确实收到了订阅(next)处理程序更改的通知。注意,此时组件B还不可见。当组件B通过routerlink点击进入可视状态时,其UI不会反映主题中的值(可观察)

  • “可见性”是问题吗
  • routerlink单击是否会导致组件B重新加载并丢失从主题捕获的数据
  • 主体是否不是促进此类沟通的正确类型?我知道routerlink可以有参数,但这不是我需要的。除组件A外,对主题的更新可以来自不同的来源。组件B需要反映主题的最新信息,无论何时该信息变得可见
  • 实现跨组件异步通信的正确方法是什么

  • 在此场景中,您应该使用行为主题。行为主体发出最后一个值。因此,当您在组件B中订阅时,它将接收组件A发出的最后一个值


    希望它能有所帮助

    你能做一个plunker或stackblitz来演示你的问题吗?我不清楚细节,看看一些代码会有帮助。通常,主题仅在提供项目时才发出项目。BehaviorSubject在订阅时发出最近的项。还有其他类型的主题,你可以在这里找到:将尝试创建一个。我在看你的常规课程,希望能找到一些线索!谢谢大家对不同主题类型的建议。它确实解决了我的问题。通过ngrx解决这个问题更好吗?