【问题标题】:Angular 7: How to send and receive a global event?Angular 7:如何发送和接收全局事件?
【发布时间】:2019-06-23 11:34:17
【问题描述】:

我学习角度,抱歉这个愚蠢的问题。

我需要为具有单个服务实例的 Windows 提供服务,或者能够发送广播事件并在每个组件中监听它们。

使用@input 和@output 不像是有不同的组件嵌套。

如何解决这个问题?

【问题讨论】:

  • 一般来说,你必须创建你自己的事件调度系统,你想要全局事件或冒泡或类似的东西。一个带有 Observable 的服务就足够了。
  • JeffryHouser ,Angular 是否有内置机制,如 redux 或 mobx?
  • VINET,不,你不需要安装 NgRx 或其他用于状态管理的库
  • 杰弗里豪斯,谢谢

标签: javascript angular events web-deployment


【解决方案1】:

实现这一点的一种方法是为此使用服务。 在服务内部创建一个 Subject 成员变量(您需要 RxJS,因为它是一个依赖项,所以已经安装了 Angular)。

Subject 可以被服务之外的任何组件订阅(您需要在组件构造函数中注入服务)。 然后,每当您想触发该事件时,您可以在 Subject 上调用 .next() ,每个订阅者都会激活自己的回调。

当订阅完成并且不再需要时,从主题中取消订阅()很重要,否则存在内存泄漏的风险(因为订阅者不会自行取消订阅)。

有很多例子,here 很简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 2021-09-06
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    相关资源
    最近更新 更多