如何在Angular中创建发布者/订阅者模型?
我一直在玩Angular,并一直在试图找到一种方法,在整个组件树中使用发布/订阅机制 EventEmitter似乎只发送一个可以订阅一级的事件,而不是更多。类似地,它只向树上发射事件,但现在向下发射 相关代码如下:如何在Angular中创建发布者/订阅者模型?,angular,publish-subscribe,Angular,Publish Subscribe,我一直在玩Angular,并一直在试图找到一种方法,在整个组件树中使用发布/订阅机制 EventEmitter似乎只发送一个可以订阅一级的事件,而不是更多。类似地,它只向树上发射事件,但现在向下发射 相关代码如下: class App { onAncestor($event) { console.log('in ancestor, decendent clicked',$event); } } ... class Entities { .... onPar
class App {
onAncestor($event) {
console.log('in ancestor, decendent clicked',$event);
}
}
...
class Entities {
....
onParent($event) {
console.log('in entities parent, child clicked',$event);
}
onGrandParent($event) {
console.log('in grand parent, grandschild clicked',$event);
}
}
只调用onParent,而不调用onGrandparent或onAncestor。类似地,它也不会向下发布。Angular 2附带了一个名为RxJs的observables库,可用于创建一个服务,我们可以订阅和提交事件 然后,我们使用依赖注入机制将该服务注入应用程序中需要它的任何位置 因此,不再需要广播/发射事件机制,因为它被更强大的可观察机制所取代,该机制内置于框架中的任何地方:
EventEmitter
是可观察的,表单值是可观察的,http
可以返回可观察的等
有关如何使用RxJs为发布/订阅构建服务的示例,请参见本文 在AngularJS 1.x的世界中,您可以使用我们在我的组织中编写的一个轻量级插件,为使用发布/订阅模型的应用程序启用快速和惰性状态管理 如果你已经离开安格拉斯大学,显然要接受安格拉斯大学的答案。
this.pubsubService.subscribe({看看这个lib-ng事件总线()
它是基于RxJS的消息/事件总线服务,用于NgRadio启发的Angular应用程序
您可以发布消息,并在代码的其他部分订阅它。谢谢。如果是这样,那么为什么Angular2有一个EventEmitter?看看类EventEmitter上的注释这里是一个如何将Observables/EventEmitter用于发布订阅的示例