gpt4 book ai didi

Angular 路由器 : how to replace param?

转载 作者:太空狗 更新时间:2023-10-29 17:01:20 26 4
gpt4 key购买 nike

假设我有 3 个网址:/:projectId/info,/:projectId/users,/:projectId/users/:userId/profile。它们都有参数 projectId。 UI 有一个组件可以从一个项目切换到另一个项目。所以我需要:

  1. 获取当前网址
  2. 按名称更改参数(例如 projectId)
  3. 导航到新网址

所以我需要像 this.router.replaceParam(currentUrl, {projectId: 'project_id_2'}) 这样的东西,它将把 /project_id_1/users/user_id_1/profile 转换成/project_id_2/users/user_id_1/profile(以及任何其他带有 :projectId 参数的 URL)

我认为这是一个简单而常见的问题,但在 1 小时内没有找到解决方案。建议here如上一条评论所述,解决方案不起作用

最佳答案

要从当前 url 导航到特定链接,您可以这样做,

 constructor(private route: ActivatedRoute, private router: Router){}
ngOnInit() {
this.route.params.subscribe(params => {
// PARAMS CHANGED ..

let id = params['projectid'];
});
}
navigate(){
this.router.navigateByUrl(this.router.url.replace(id, newProjectId));
// replace parameter of navigateByUrl function to your required url
}

在 ngOnInit 函数上,我们已经订阅了参数,因此我们可以观察并执行我们对 url 参数的任何更改的语句。

编辑

案例:id可以相同的地方

constructor(private route: ActivatedRoute, private router: Router){}
projectId:string;
userId: string;
ngOnInit() {
this.route.params.subscribe(params => {
this.projectId = params['projectid'];
this.userId = params['userId'];
});
}
navigate(){
// for /project/:projectId/users/:userId/profile
this.router.navigate(['/project', this.projectId, '/users',
this.userId, '/profile']);
}

关于 Angular 路由器 : how to replace param?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50784299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com