有没有办法在angular2中发出可以在整个应用程序中收听的事件?就像我们在AngularJS中使用$rootScope.broadcast
和emit
一样。在angular2中可以达到同样的效果吗?我阅读了关于@Output()
和EventEmitter()
并实施了它,但它只限制父母监听由孩子提供的事件。我读了BehaviorSubject
是做这件事的方法之一。这是正确的方法吗?任何其他解决方案?在Angular中的应用程序中发射和广播事件
回答
在Angular2中没有全局范围。只有组件和服务。
通过服务,您可以根据您提供的地点来定义其范围。如果您在@NgModule({providers: ...})
(或在导入的模块中)提供了一个,它将变为全局可用。如果您在某个组件上提供它,则只有该组件及其子组件可用。
有关示例如何使用共享服务见https://github.com/dart-lang/sdk/issues/27637
您也可以派遣冒泡DOM事件一样显示在@Output() someOutput:EventEmitter = new EventEmitter();
发出in Angular2 how to know when ANY form input field lost focus
事件不泡。
'BehaviorSubject'是一个简单的方法。铁杆反应主义者认为应该避免“主题”。 http://davesexton.com/blog/post/To-Use-Subject-Or-Not-To-Use-Subject.aspx,http://stackoverflow.com/questions/14396449/why-are-subjects-not-推荐在网络反应扩展所以这是一个固执己见的问题。如果你是rxjs的新手,我建议你使用它,直到你对反应式编程更加舒适,并且能够为自己做出决定。 –
感谢Gunter!我会做的。只是想确认我的知识服务是做到这一点的最佳方式吗? –
服务是**在Angular2中实现它的方法。 –
- 1. 何时在Angular JS中使用发射和广播?
- 2. Angular 2:事件广播服务
- 3. 如何在我的iOS应用程序中播放广播? Swift和AVFoundation
- 4. 应用程序没有接收广播发射启动时,但从其他应用程序发起时接收
- 5. Nativescript Angular - 使用应用程序事件
- 6. 在C中访问广播事件#
- 7. 广播听众不是广播事件
- 8. Angular2应用程序在发射事件后重新加载
- 9. AS3中的自定义广播事件?
- 10. Asp.net应用程序广泛事件发布
- 11. 在Node.js中发射事件
- 12. Laravel广播不发送事件推送
- 13. 在GWT应用程序中捕获Youtube播放器事件
- 14. Android广播发送应用程序的包名
- 15. 将短信广播存储在应用程序中以后发送
- 16. IOS上的广播事件
- 17. 在iphone应用程序中的广告
- 18. 点击事件geting在模块骨干应用程序中发射两次
- 19. Angular $广播问题
- 20. Intent.ACTION_PACKAGE_CHANGED - 应用程序组件的广播禁用未收到
- 21. 在Angular 1应用程序中使用Angular 2组件
- 22. 处理程序中的广播意图
- 23. Angular 2广播事件通知其他组件
- 24. 将广播意图从服务发送到应用程序类
- 25. 应用程序停止后未触发广播接收器
- 26. 将广播从一个应用程序发送到另一个
- 27. Pusher和Laravel 5.3事件广播
- 28. 如何接收广播事件,即使当我的应用程序在Android中的背景
- 29. 在应用程序中添加广告?
- 30. TextBox TextChanged事件和CheckBoc CheckedChanged事件不在GridView中发射
使用observables似乎是一个很好的选择:http://stackoverflow.com/questions/34376854/delegation-eventemitter-or-observable-in-angular2/35568924#35568924 – j3r6me
你可以添加一个可观察到你的父母得到当孩子排出时设置。然后,您可以在任何需要的地方订阅该观察点。 –