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

标签 angular angular2-routing

ActivatedRoute字段是 Observable。例如,我们想要获取一个 id 参数或只是 URL 的第 n 段。我们使用 Observables 而不是简单的映射或数组。这是对异步的过度使用还是出于某种目的真的需要这种方式?

最佳答案

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

但默认情况下,如果您从一条路线导航到同一路线,路由器会重复使用同一组件,仅更改参数。因此,您需要一个 Observable 来响应组件内部参数值的变化。

例如,假设您有一个要显示的练习列表。单击练习时,您将转到 /exercises/1。在显示练习的组件模板中,您有一个指向 /exercises/2 的“Next”链接。单击该链接将使 params Observable 发出一个新值。但是路由器不会创建 ActivatedRoute 的新实例,也不会创建 ExerciseComponent 的新实例。 ExerciseComponent 需要订阅可观察的参数,以便在发出事件时加载练习 2 的详细信息。

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

关于angular - 为什么 Angular 2 在路由中使用 Observable 而不是简单的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42188270/

相关文章:

Angular 2 : getting RouteParams from parent component

angular - 如何访问服务中 angular 2/4 中为特定路线添加的静态数据?

angular - VS 2022 停留在运行 Angular 应用程序上

javascript - ionic 3 - ionic 元素点击不起作用

Angular 2 嵌入 : Can I pass slot content upward to a parent Component

javascript - 从8到9的 Angular 更新给测试框架带来了问题

angular - 使用主题标签方法进行路由会破坏应用程序登录

angular - 单击以删除/停用 Angular 2 中的辅助路线

Angular 2 this.router.events.subscribe 在刷新或输入 url 时不起作用

javascript - 在 Angular 2 中调用函数时在 HTML 中创建一个 div