ActivatedRoute字段是可觀察的。例如,我們想要獲得一個id參數或者只是第n個網段。我們使用Observables來代替簡單的映射或數組。這是過度使用異步還是真的需要一個目的?爲什麼Angular 2在路由中使用Observable而不是簡單的數組?
2
A
回答
4
您可以使用snapshot
field of the ActivatedRoute獲取當前版本的參數。
但是默認情況下,如果您從路由導航到相同的路由,僅更改參數,路由器會重用相同的組件。因此,您需要一個Observable才能對來自該組件內部的參數值的更改做出反應。
比方說,您有一個要顯示的練習列表。當你點擊練習時,你會去/exercises/1
。在顯示練習的組件的模板中,您有一個到/exercises/2
的「下一步」鏈接。點擊該鏈接將使params
Observable發出一個新值。但路由器不會創建ActivatedRoute的新實例,並且不會創建ExerciseComponent的新實例。 ExerciseComponent需要訂閱可觀察的參數,以便在事件發出時加載練習2的細節。
如果您沒有這樣的鏈接,那麼快照就是您所需要的,並且它確實包含了作爲常規對象的參數。
相關問題
- 1. Angular 2:爲什麼在檢索路由參數時使用switchMap?
- 2. 爲什麼路由在Angular 2中不起作用?
- 3. Angular 2路由器在Resolve中使用BehaviorSubject Observable
- 4. 爲什麼我的路由不能在Angular JS中使用URL?
- 5. Angular 2路由器使用Observable進行解析
- 6. 在Angular-2中使用Ui路由
- 7. Angular 2組件路由
- 8. angular 2 es5組件路由
- 9. 爲什麼使用路由而不是window.location?
- 10. 爲什麼使用'/'而不是其他字符來路由
- 11. Angular 2 Observable to Observable []
- 12. Angular-2 Observable不起作用
- 13. 爲什麼我應該使用XMLLIst而不是簡單的XML?
- 14. 爲什麼要使用JSF而不是簡單的ZK框架
- 15. 使用來自Observable Angular 2的數據
- 16. Angular 2 |不能在路由組件上使用屬性綁定
- 17. Angular 2中的組件是什麼
- 18. Angular 2路由不會路由
- 19. 爲什麼使用Angular 2中的Observable在按鈕單擊時不顯示文本?
- 20. 使用數組,而不是命名的路由助手
- 21. 爲什麼<路由組件= {菜單} />而不是<Menu />?
- 22. 爲什麼使用match而不是在Rails中路由時獲取?
- 23. Angular 2路由行爲不如預期
- 24. 爲什麼在Python中使用「if __name __ =='__ main__':main()」而不是簡單的「main()」?
- 25. 爲什麼在Clojure中使用merge-with而不是簡單的'merge'?
- 26. Angular 2 Observable
- 27. Angular 2 Observable Refresh
- 28. Angular的ng-show爲什麼不是最簡單的例子?
- 29. Angular 2中的路由參數
- 30. 爲什麼不使用數組而不是許多參數