2017-12-27 154 views
0

我有一个热门的RxJS Observable,我想根据应用程序的上下文采用不同的方式进行响应。该主题发出基于由指令拦截一些全球性行动的新事件,但后来我想角度服务中RxJS主题的​​上下文处理

  • 若一个子组件订阅的主题,那么孩子应该处理该事件
  • 否则,使用全局处理程序

我可以从主题获取订阅者的数量,然后告诉全局处理程序忽略是否有多个订阅者,但它不是API的一部分,所以它看起来可能不是正确的方式来处理它。那么做这件事的正确方法是什么?

此外,全局事件处理程序应该是指令,服务的一部分,还是应该在新组件中?

+0

全局处理程序本身是一个观察者? – martin

+0

@martin全局处理程序可以订阅主题。为了知道我发生了一件事情,我必须这样做。 – Keith

回答

0

您可以将全局事件主题放入全局app.service中,并将其注入其他组件以进行订阅。

虽然理想的组件应该有自己的服务可能处理复杂的事件,但有时我觉得直接注入全局服务会使代码更清洁。否则,如果你真的想要完全隔离,或者组件应该被广泛地重用,例如UI下拉列表,我建议使用@Output来触发事件(btw angular Eventmitter继承Subject)和@Input来获取变量。