在 Angular 中的整个应用程序中发出和广播事件

Emit and broadcast events throughout application in Angular

有没有办法在 angular2 中发出可以在整个应用程序中收听的事件?就像我们在 AngularJS 中使用 $rootScope.broadcastemit 一样。同样的事情可以在 angular2 中实现吗?我阅读了 @Output()EventEmitter() 并实施了它,但它仅限制 parent 监听由 child 发出的事件。

我了解到 BehaviorSubject 是实现此目的的方法之一。这是正确的做法吗?还有其他解决方案吗?

在 Angular2 中没有全局作用域。只有组件和服务。

对于服务,您可以通过提供它们的地点来定义它们的范围。如果您在 @NgModule({providers: ...})(或导入的模块)中提供一个,它就可以在全球范围内使用。如果您在组件中提供它,则它仅适用于该组件及其子组件。

有关如何使用共享服务的示例,请参阅 https://github.com/dart-lang/sdk/issues/27637

您还可以发送冒泡 DOM 事件,如

中所示

使用 @Output() someOutput:EventEmitter = new EventEmitter(); 发出的事件不会冒泡。