2017-12-27 207 views
0

我有一個熱門的RxJS Observable,我想根據應用程序的上下文采用不同的方式進行響應。該主題發出基於由指令攔截一些全球性行動的新事件,但後來我想角度服務中RxJS主題的​​上下文處理

  • 若一個子組件訂閱的主題,那麼孩子應該處理該事件
  • 否則,使用全局處理程序

我可以從主題獲取訂閱者的數量,然後告訴全局處理程序忽略是否有多個訂閱者,但它不是API的一部分,所以它看起來可能不是正確的方式來處理它。那麼做這件事的正確方法是什麼?

此外,全局事件處理程序應該是指令,服務的一部分,還是應該在新組件中?

+0

全局處理程序本身是一個觀察者? – martin

+0

@martin全局處理程序可以訂閱主題。爲了知道我發生了一件事情,我必須這樣做。 – Keith

回答

0

您可以將全局事件主題放入全局app.service中,並將其注入其他組件以進行訂閱。

雖然理想的組件應該有自己的服務可能處理複雜的事件,但有時我覺得直接注入全局服務會使代碼更清潔。否則,如果你真的想要完全隔離,或者組件應該被廣泛地重用,例如UI下拉列表,我建議使用@Output來觸發事件(btw angular Eventmitter繼承Subject)和@Input來獲取變量。