Angular - 按名称编辑路由变量
Angular - Edit route variables by name
在我的 Angular 12 项目中,我有这样的路线:
/:par1/:par2/something/page
/:par1/:par2/something2/page2
我需要以编程方式设置 par1 和 par2。
现在我使用这段代码来实现:
const url = this.router.routerState.snapshot.url;
const splittedUrl = url.split('/');
splittedUrl[1] = getPar1();
splittedUrl[2] = getPar2();
this.router.navigate(splittedUrl);
但我发现这是一个非常丑陋的解决方案。
有没有办法像我们从激活的路由中获取它们时那样通过名称设置 par1 和 par2?
我今天解决了同样的问题。
这是我的方法:
将 ActivatedRoute 导入构造函数
constructor(private activatedRoute: ActivatedRoute)
使用 activatedRoute 获取 urlSegment 并映射包含所有段的数组(在需要时应用您的更改)
这是针对您的问题应用的示例
const url: string[] = this.activatedRoute.snapshot['_urlSegment'].segments.map((urlSegment: UrlSegment, index: number) => {
if (index === 0) return getPar1();
else if (index === 1) return getPar2();
else return urlSegment.path;
});
this.router.navigate(url);
在我的 Angular 12 项目中,我有这样的路线:
/:par1/:par2/something/page
/:par1/:par2/something2/page2
我需要以编程方式设置 par1 和 par2。
现在我使用这段代码来实现:
const url = this.router.routerState.snapshot.url;
const splittedUrl = url.split('/');
splittedUrl[1] = getPar1();
splittedUrl[2] = getPar2();
this.router.navigate(splittedUrl);
但我发现这是一个非常丑陋的解决方案。
有没有办法像我们从激活的路由中获取它们时那样通过名称设置 par1 和 par2?
我今天解决了同样的问题。
这是我的方法:
将 ActivatedRoute 导入构造函数
constructor(private activatedRoute: ActivatedRoute)
使用 activatedRoute 获取 urlSegment 并映射包含所有段的数组(在需要时应用您的更改)
这是针对您的问题应用的示例
const url: string[] = this.activatedRoute.snapshot['_urlSegment'].segments.map((urlSegment: UrlSegment, index: number) => {
if (index === 0) return getPar1();
else if (index === 1) return getPar2();
else return urlSegment.path;
});
this.router.navigate(url);