Angular 单个可观察者,多个观察者

时间:2021-01-07 12:25:26

标签: angular rxjs observable behaviorsubject

学习 Angular 到服务、组件和可观察对象。

我正在尝试在我的演示应用中实现暗模式。控制由服务完成,该服务根据浏览器默认设置设置深色主题(如果找到)。

它在应用程序组件中初始化,以便稍后在应用程序中放置控制开关。

暗模式从一个布尔值开始工作,所以要么是真要么是假。据我了解,使用 observable 是不够的,因为我希望多个订阅者都将两种方式绑定到订阅,每种方式都以不同的方式在服务中切换这些 observable。到目前为止,我很确定这是正确的。

我被卡住的部分。假设你想要 3 个不同的组件,一个按钮组件,一个工具栏,一个设置中的复选框,以及用户主要设置中的切换开关。

您将如何使用在服务中的可观察对象和每个组件之间建立 2 向链接,以便当每个组件发出切换事件时全部更新?我很确定 behaviorSubject 或 subject observables 是正确的方法,但 angular 文档真的只用于单个案例使用吗?除非我看不到它,并且对这些可观察值差异的进一步解释似乎仅限于它们之间的差异。一个从 init 值返回另一个现在,但不是它们跨多个组件的实现

您是否有一个全局 observable,所有组件都在 init 上创建单独的 observable 以更新视图..我一无所知.. 在实践中尝试使用它时似乎很简单,但令人难以置信。

1 个答案:

答案 0 :(得分:0)

听起来您想在多个组件之间共享一个 observable,并让每个组件监听它并通过打开/关闭来修改它?

您可以使用单例服务并订阅组件中的主题吗?这个 stackblitz 相当粗糙,但它是一个单独的组件更新单个共享源可观察的示例。在这种情况下,它也不必使用 BehaviorSubject,只需执行常规主题即可。如果您愿意,可以将行为主题默认为浅色模式。

https://stackblitz.com/edit/angular-ox4utu