2

有没有办法在 angular2 中发出可以在整个应用程序中收听的事件?就像我们在 AngularJS 中使用$rootScope.broadcastand一样emit。可以在angular2中实现同样的事情吗?我阅读@Output()EventEmitter()实现了它,但它只限制父母收听孩子发出的事件。

我读到了BehaviorSubject成为做到这一点的方法之一。这是正确的方法吗?对此还有其他解决方案吗?

4

1 回答 1

2

在 Angular2 中没有全局范围。只有组件和服务。

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

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

您还可以分派一个冒泡的 DOM 事件,如Angular2 如何知道任何表单输入字段何时失去焦点中所示

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

于 2016-12-01T07:21:48.253 回答