我有一个热门的RxJS Observable,我希望以不同的方式响应,具体取决于应用程序的上下文 . 主题基于指令截获的某些全局操作发出新事件,但后来我想要
如果子组件正在订阅主题,则子项应处理该事件
否则,请使用全局处理程序
我可以从Subject获得订阅者数量,然后告诉全局处理程序忽略是否有多个订阅者,但它不是API的一部分,所以看起来它可能不是处理它的正确方法 . 那么这样做的正确方法是什么?
此外,全局事件处理程序应该是指令,服务的一部分,还是应该在新组件中?
您可以将全局事件主题放在全局app.service中,并将其注入其他组件以进行订阅 .
虽然理想组件应该只有自己的服务来处理复杂事件,但有时我觉得直接注入全局服务可以使代码更清晰 . 否则,如果你真的想要完全隔离,或者组件应该可以广泛重用,例如UI下拉列表,我建议使用@Output来触发事件(btw angular EventEmitter继承Subject)和@Input来接收变量 .
1 回答
您可以将全局事件主题放在全局app.service中,并将其注入其他组件以进行订阅 .
虽然理想组件应该只有自己的服务来处理复杂事件,但有时我觉得直接注入全局服务可以使代码更清晰 . 否则,如果你真的想要完全隔离,或者组件应该可以广泛重用,例如UI下拉列表,我建议使用@Output来触发事件(btw angular EventEmitter继承Subject)和@Input来接收变量 .