当前位置: 首页 > 知识库问答 >
问题:

角度单一可观测,多个观察者

赵浩邈
2023-03-14

学习角得到服务和组件和可观察性。

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

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

模式从布尔值开始工作,因此为true或false。据我所知,使用一个可观察对象是不够的,因为我希望多个订阅者都以两种方式绑定到订阅,每种方式在服务中切换这些可观察对象。到目前为止,我很肯定这是正确的。

我被卡住的那部分。假设您想要3个不同的组件,例如工具栏上的按钮组件、设置中的复选框和用户主设置中的切换开关。

您将如何使用使服务中的可观察到和每个组件之间的双向链接,以便当每个组件发出切换事件时都更新?我很确定行为主题或主题观察是正确的路线,但是角度文档真的只适用于单个案例吗?除非我看不见它,并且对这些可观察到的差异的进一步解释似乎是有限的,因为它们之间的差异。一个现在从初始值返回另一个,但不是它们在多个组件上的实现

您是否有一个全局可观测值,组件都会在init上创建单独的可观测值来更新视图。。我不懂。。这似乎很简单,但当试图在实践中它令人难以置信。

共有1个答案

凌志学
2023-03-14

听起来您想在多个组件之间共享一个可观察对象,并让每个组件监听它,然后通过切换开/关来修改它?

您可以使用单例服务并订阅组件中的主题?这个stackblitz相当粗糙,但它是一个单独组件更新单个共享源的例子。在这种情况下,它也不必使用行为主题,只需使用常规主题即可。如果您愿意,将行为主体默认为灯光模式可能会很有用。

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

 类似资料:
  • 我有一个组件订阅服务中的一个可观察对象。该方法反过来订阅另一个服务中的可观察对象。我想将一个数组从最后一个服务传递回第一个服务,然后第一个服务将该数组传递回组件。更具体地说,该组件调用其本地服务,然后调用一个数据服务,该数据服务通过http客户端访问我的数据库。http客户端正在工作,数据服务将数组返回给本地服务。本地服务接收数组,但我不知道如何将该数组作为可观察对象传递回组件。以下是简短的代码块

  • 我有一个HTTP请求,希望将结果共享给多个组件。当然,HTTP请求返回一个可观察的。我希望多个组件能够订阅此服务,而不会触发额外的HTTP请求。 我在一个组件中使用实现了这一点,该组件按需发出HTTP请求,并有另一种方法订阅该主题。虽然这是可行的,但似乎有些过分,而且肯定有更好的方法。 主题服务 和一个订户 和第二个订户 从管道链中删除时,会发出多个网络请求。是否有一种更优雅/正确的方式将观察到的

  • 问题内容: 我一直在阅读Observer模式,以保持UI处于最新状态,但仍然看不到它的用途。即使在我的特定对象中通知了我的MainActivity然后运行update();方法我仍然无法使用Pet对象来获取更新值,因为该对象是在Oncreate中创建的…而我只是无法创建新对象,因为那时变量会有所不同..这是我的实施,它似乎不起作用。 观察者/ MainActivity 可观察/宠物 问题答案: 首

  • 我来自同步编程背景,我很难理解可观察性。 这是我的服务/提供商的摘录(离子2项目) 我将从订阅它。关于这一点,我有几个问题。 > 即使我没有声明,上面的代码是否返回一个可观察/观察者? 响应是JSON。如何检查/处理JSON并执行一些操作,如 那就做吧 我认为应该在提供者类中完成。只是一个典型的提示/例子将是真棒。 当请求到达subscribe方法时,它是否真的发生了? 创建和返回Angular

  • 我有一个服务,有一个方法foo。在该方法中,我订阅了一个可观察的(超文本传输协议-客户端)。 我喜欢从foo返回一个布尔值,该值取决于get。这不起作用,因为http.get是asynchrouns-在http.get完成之前调用return。 我怎样才能使这个同步? 编辑 返回可观察的布尔值在这里不是一个选项。这是因为我处理get in foo的响应(此处未显示),但我也需要根据它的返回来执行f

  • 是否有一种设计模式可以形成一个“复合”观察者/可观察者? 我的意思是我有一个可观察的,它在某个变化时通知它的监听器。 每个监听器也是一个可观察的,并通知它自己的监听器(在某个动作上,它做了哪个动作是由第一个可观察的通知触发的)。 这种观察者/可观察的“链接”作为设计是可以的,还是有一个标准的模式?