angular - Angular4中ActivatedRoute和ActivatedRouteSnapshot有什么区别

标签 angular angular-routing angular2-router

ActivatedRouteSnapshot 和 Angular 4 中的 ActivatedRoute 有什么区别?据我了解,ActivatedRouteSnapshotActivatedRoute 的子项,这意味着 ActivatedRoute 包含 ActivatedRouteSnapshot

顺便说一下,我尝试运行 Google 搜索来寻找这个问题的答案,但我没有发现任何可以理解的搜索结果。

谢谢!

最佳答案

ActivatedRoute can be reused , ActivatedRouteSnapshot 是一个不可变对象(immutable对象),表示 ActivatedRoute特定版本。它将所有与 ActivatedRoute 相同的属性公开为普通值,而 ActivatedRoute 将它们公开为可观察对象。

下面是实现中的注释:

export class ActivatedRoute {
  /** The current snapshot of this route */
  snapshot: ActivatedRouteSnapshot;

如果一个路由器重用了一个组件并且没有创建一个新的激活路由,你将有两个版本的 ActivatedRouteSnapshot 用于相同的 ActivatedRoute。假设您有以下路由配置:

path: /segment1/:id,
component: AComponent

现在您导航到:

/segment1/1

activatedRoute.snapshot.params.id 中的参数 1

现在您导航到:

/segment1/2

activatedRoute.snapshot.params.id 中的参数 2

您可以通过执行以下操作来查看它:

export class AComponent {
  constructor(r: ActivatedRoute) {    
    r.url.subscribe((u) => {
      console.log(r.snapshot.params.id);
    });

关于angular - Angular4中ActivatedRoute和ActivatedRouteSnapshot有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46050849/

相关文章:

javascript - 如何使用 Angular 更新具有特定条件的数组值

angular - 如何在 Angular 2 中使用子路由

Angular 2 : Routing to the same page and changing query parameters

javascript - AngularJS路由: get template with data

Angular 2 : How to conditionally load a Component in a Route asynchronously?

c# - Azure B2C 身份验证(Angular + .net core Web API)- 不记名 token 中未找到范围或角色声明

angular - 如何防止 Firebase 在 Angular 2 中重复触发变更检测?

angular - @ionic-native/从 observable 获取网络值(value)

javascript - 你如何强制 ngFor 在路由器导航后重新运行? ( Angular 2)