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

时间:2016-07-13 17:08:20

标签: angular routing

我目前正尝试导航到具有不同ID值的同一页面。因此,如果我在/test/1并且转到/test/2浏览器中的网址更新,但视图不会刷新。我调试了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 个答案:

答案 0 :(得分:15)

当您使用不同的param导航到相同的路径时,它会重用该组件。因此,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和“获取路线参数”部分