我有一个这样的路由dashboard/tour/2/269
,这个组件代表游览细节,在该组件内部有一些链接引用类似的游览,所以当用户点击其中一个链接我想重新加载组件基于新的参数,比如让我们说dashboard/tour/5/150
,我尝试使用直接[routerLink]
,但它将新的参数附加到旧参数上,使其变为无效dashboard/tour/2/269/tour/5/150
。
请提出任何建议。
答案 0 :(得分:0)
您必须将ActivatedRoute
注入您的组件。你的路线必须这样设置:
{ path: 'person/:id/:office_id', component: PersonComponent },
然后订阅参数:
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.params
.subscribe(params => {
const id = +params['id'];
const office = +params['office_id'];
console.log(`Current params are person ID ${id} and office ID ${office}`);
});
}
您的routerLink将是:
[routerLink]="['/persons', 2, 5]"
在这里,我在构造函数中注入了ActivatedRoute
route
的实例。
您需要获取您在Dashboard组件的路由中列出的每个参数。在此示例中,我的路由很简单persons/:id
,我将从id
获取http://localhost:3000/persons/1
。因此,如果我有一个路由器链接指向下一个人说[routerLink]="['/persons', 2]"
,则此代码段将更新并向我提供id
2
。
根据您当前的插图和问题,这听起来像您正在寻找的解决方案。
StackBlitz解决方案