Angular rc3 路由器 - 使用不同参数导航到同一页面

Posted

技术标签:

【中文标题】Angular rc3 路由器 - 使用不同参数导航到同一页面【英文标题】:Angular rc3 router - Navigating to same page with different parameters 【发布时间】:2016-11-16 09:42:00 【问题描述】:

我目前正在尝试导航到具有不同 id 值的同一页面。因此,如果我在/test/1 上并转到/test/2,浏览器中的 url 会更新,但视图不会刷新。我调试了 ngOnInit,导航到 /test/2 时它没有重新运行。但是,如果我从test/1 转到other,路由工作正常,只有在使用不同参数导航到同一路由时才会出现问题。有没有其他人遇到过这个?当我有时间生病时上传一个 plunkr。

Angular 2 rc3 路由器3.0.0-beta.2

RouterConfig = [
    
        path: '',
        component: 'Layout',
        children: [
            
                path: 'test/:id',
                component: TestComponent
            ,
            
                path: 'other',
                component: OtherComponent
            
        ]
    
]

谢谢, LL

【问题讨论】:

【参考方案1】:

当您使用不同的参数导航到相同的路线时,它会重用该组件。因此ngOnInit 不会再被调用。 你应该订阅ngOnInit中的routeparam,然后在订阅的函数中进行视图更新

在构造函数中注入激活的路由

constructor(
  private route: ActivatedRoute,
  private router: Router,......) 

ngOnInit方法中,我们使用ActivatedRoute服务来检索我们的路由参数

ngOnInit() 
  this.sub = this.route.params.subscribe(params => 
     let id = +params['id']; // (+) converts string 'id' to a number
     //here goes your logic like below
this.service.getHero(id).then(hero => this.hero = hero);
   );

更多详情see 和“获取路由参数”部分

【讨论】:

嗯,我明白了。我的问题是我在 ngOnInit 中进行了服务调用,而不是我的 params 订阅。谢谢阿加瓦尔

以上是关于Angular rc3 路由器 - 使用不同参数导航到同一页面的主要内容,如果未能解决你的问题,请参考以下文章

如何对依赖于 RC3 路由器的组件进行单元测试?

如何使用 Reactive Forms (Angular2 RC3) 进行异步验证?

Angular 5:用于导航到相同路线但参数不同的路线动画

如何在 Angular 中使用不同的参数更新相同的组件

Angular2路由器2.0.0在加载不同参数的相同url时不重新加载组件?

将 ES6 与 Angular2 rc3 一起使用时,需要未捕获的反射元数据 shim