Angular:RxJS BehaviorSubject

2025-06-08

Angular:RxJS BehaviorSubject

我们知道,多个组件共享公共数据,并且始终需要更新共享数据。在这种情况下,大多数情况下会使用 BehaviorSubject 来充当单一存储库,用于保存更新的共享数据。

  • BehaviorSubject 既是观察者,又是可观察的类型。
  • BehaviorSubject 总是需要一个初始/默认值。
  • 订阅的每个观察者都会获得当前值。
  • 当前值是使用 next() 方法由源可观察对象发出的最新值或初始/默认值。

让我们实现 BehaviorSubject 来更好地理解概念!

例如,在订单跟踪应用程序中,根据用户操作在标题和仪表板部分的 UI 上显示购物车中的商品总数愿望清单中的商品总数。

现在我们有三个组件 -
HeaderComponent、DashBoardComponent、TableComponent

用户界面
直播运行

当用户在购物车/愿望清单中添加商品时,需要在标题和仪表板组件中更新总数。

1.首先在订单服务中创建一个 BehaviorSubject,用于保存订单计数的初始状态,以便任何组件都可以使用它。2. 现在所有观察者(3 个组件)都需要订阅源可观察对象以获取当前值并将其显示在 UI 上。
服务

标题
仪表板
桌子

3.当用户执行任何操作时,调用 BehaviorSubject 的 next() 方法。当 next() 方法被调用时,它将使用新的计数更新当前计数,并将更新后的计数通知给所有订阅源可观察对象的观察者(3 个组件)。

行动

这样,BehaviorSubject 使得组件通信更加有效。

PS:不要忘记取消 ngOnDestroy() 中的所有订阅,以避免内存泄漏和意外输出。

感谢阅读!如果您觉得本文有用,请分享!

鏂囩珷鏉ユ簮锛�https://dev.to/diptekhd/angular-behaviorsubject-p1
PREV
React - 创建简单的动画进度条 GenAI LIVE!| 2025 年 6 月 4 日
NEXT
你未充分利用的 5 大 JavaScript 功能