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