如何在Angular中创建发布者/订阅者模型?

Lio*_*ior 5 publish-subscribe angular

我一直在使用Angular,并且一直在尝试寻找一种在整个组件树中使用pub / sub机制的方法。

似乎EventEmitter仅发出可以预订到一个级别的事件,但不能更多。同样,它仅将事件向上发射到树上,而现在向下发射。

矮人

相关代码在这里:

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);
   } 
Run Code Online (Sandbox Code Playgroud)

}

仅调用onParent,而不调用onGrandparent或onAncestor。同样,它也不会向下发布。

Ang*_*ity 6

Angular 2 带来了一个名为 RxJs 的 observables 库,因此可用于创建我们可以订阅和提交事件的服务。

然后我们使用依赖注入机制在我们需要的应用程序的任何地方注入该服务。

所以不再需要广播/发射事件机制,因为它被更强大的 observables 机制所取代,该机制内置于框架中的任何地方:EventEmitter是一个可观察的,表单值是可观察的,http可以返回可观察的等等。

有关如何使用 RxJs 构建服务进行发布/订阅的示例,请参阅此存储库