首页 > 解决方案 > 一个角度组件如何在不手动刷新整个页面的情况下告诉另一个组件刷新

问题描述

我有一个带有firebase auth的节点后端,它连接到一个角度前端。我有两个组件,即导航栏和注册表单,当我注册时,我调用后端函数在 firebase 中注册并发回 firebase.auth().currentUser,我的 Angular 前端导航栏应该如何检测到此类用户的到来和相应地更新自身,无需我刷新页面?

标签: node.jsangularfirebasefirebase-authentication

解决方案


输入和输出运算符很好,但它不能像可观察的那样提供共享数据的灵活性

在这里,您需要使用 Subject Observable 在应用程序之间共享数据。这是非常简单和有用的事情。当用户注册时,您可以向所有 lisner 发送信号。

你需要做什么

1)创建一个服务文件来共享数据 - 服务具有可观察的主题。使用它,您可以订阅用户数据的频道

2)在您的标头组件中侦听该服务并将侦听器传入数据设置为标头用户数据

3) 从您的注册、个人资料更新或其他任何用户数据已更新的地方,只要将这些数据传递给可观察对象,它将自动更新整个应用程序中的用户。按照下面的例子来实现这一点

您可以在下面的链接中找到工作演示

https://jasonwatmore.com/post/2019/02/07/angular-7-communicating-between-components-with-observable-subject


推荐阅读