有没有办法在 angular2 中发出可以在整个应用程序中收听的事件?就像我们在 AngularJS 中使用$rootScope.broadcast
and一样emit
。可以在angular2中实现同样的事情吗?我阅读@Output()
并EventEmitter()
实现了它,但它只限制父母收听孩子发出的事件。
我读到了BehaviorSubject
成为做到这一点的方法之一。这是正确的方法吗?对此还有其他解决方案吗?
有没有办法在 angular2 中发出可以在整个应用程序中收听的事件?就像我们在 AngularJS 中使用$rootScope.broadcast
and一样emit
。可以在angular2中实现同样的事情吗?我阅读@Output()
并EventEmitter()
实现了它,但它只限制父母收听孩子发出的事件。
我读到了BehaviorSubject
成为做到这一点的方法之一。这是正确的方法吗?对此还有其他解决方案吗?
在 Angular2 中没有全局范围。只有组件和服务。
使用服务,您可以通过提供服务的位置来定义它们的范围。如果您在@NgModule({providers: ...})
(或在导入的模块中)提供一个,它将成为全球可用的。如果您在组件中提供它,则它仅适用于该组件及其子组件。
有关如何使用共享服务的示例,请参阅https://github.com/dart-lang/sdk/issues/27637
您还可以分派一个冒泡的 DOM 事件,如Angular2 如何知道任何表单输入字段何时失去焦点中所示
发出的事件@Output() someOutput:EventEmitter = new EventEmitter();
不会冒泡。