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. 为什么不使用数组而不是许多参数