为什么Angular 2在路由中使用Observable而不是简单数组?

时间:2017-02-12 13:43:13

标签: angular angular2-routing

ActivatedRoute字段是Observables。例如,我们想要获取id参数或仅获取第n个URL段。我们使用Observables而不是简单的地图或数组。这是过度使用异步还是真的需要用于某个目的?

1 个答案:

答案 0 :(得分:4)

您可以使用snapshot field of the ActivatedRoute获取参数的当前版本。

但默认情况下,如果从路由导航到同一路由,路由器将重用相同的组件,仅更改参数。因此,您需要Observable能够对该组件内部的参数值的更改做出反应。

例如,假设您有要显示的练习列表。单击练习后,您将转到/exercises/1。在显示练习的组件的模板内,您有一个" Next"链接到/exercises/2。单击该链接将使params Observable发出新值。但路由器不会创建ActivatedRoute的新实例,也不会创建一个新的ExerciseComponent实例。 ExerciseComponent需要订阅params observable,以便在发出事件时加载练习2的细节。

如果您没有这样的链接,那么快照就是您所需要的,它确实包含了作为常规对象的参数。