我目前正尝试导航到具有不同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
答案 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和“获取路线参数”部分