有沒有辦法在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:服務中的廣播事件
- 3. Angular 2:事件廣播服務
- 4. 在Android應用程序中Deepzer Deezer(廣播和藝術家)
- 5. Angular 2事件發射器?
- 6. 如何在我的iOS應用程序中播放廣播? Swift和AVFoundation
- 7. 需要在Angular應用程序中播放視頻文件
- 8. 應用程序沒有接收廣播發射啓動時,但從其他應用程序發起時接收
- 9. Nativescript Angular - 使用應用程序事件
- 10. 在C中訪問廣播事件#
- 11. Angular - 應用程序啓動事件
- 12. 角度廣播的發射多發次
- 13. 廣播聽衆不是廣播事件
- 14. Angular2應用程序在發射事件後重新加載
- 15. 在AngularJS中處理應用程序狀態和事件廣播的最佳做法是什麼?
- 16. AS3中的自定義廣播事件?
- 17. Asp.net應用程序廣泛事件發佈
- 18. 使用Adobe Flash的iOS應用程序中的UDP廣播
- 19. 在Node.js中發射事件
- 20. 在AIR和iOS應用程序中播放MP3應用程序
- 21. 在GWT應用程序中捕獲Youtube播放器事件
- 22. Laravel廣播不發送事件推送
- 23. 通過android應用程序在局域網中廣播消息
- 24. Android應用程序更新廣播
- 25. Android廣播發送應用程序的包名
- 26. 在Twitter中觸發事件引導程序的輪播
- 27. Angular 2中的Angular 1應用程序
- 28. 本地發送有序廣播(在我的過程中)?
- 29. 點擊事件geting在模塊骨幹應用程序中發射兩次
- 30. 將短信廣播存儲在應用程序中以後發送
使用observables似乎是一個很好的選擇:http://stackoverflow.com/questions/34376854/delegation-eventemitter-or-observable-in-angular2/35568924#35568924 – j3r6me
你可以添加一個可觀察到你的父母得到當孩子排出時設置。然後,您可以在任何需要的地方訂閱該觀察點。 –