这是我路由器的一个例子:
/en/page1
URL中可能的变体示例如下:
/es/page1/child
lang
正如您所看到的,第一个参数是/en/path/to/child/page
,这意味着页面的语言,之后它只是儿童页面的路径。
我需要创建一个链接,它将重新加载当前状态,但使用不同的param(在我的情况下是语言),如下所示:
/es/path/to/child/page
- > /path/to/child/page
对我而言最困难的部分就是:
我不想在[routherLink]
中对ActivatedRoute
进行硬编码,它应该是动态的。也许取自<a [routerLink]="??">Spanish</a>
,但我还没有找到办法如何做到
它应该是一个链接,如此this.router.navigate(...);
,不是控制器中的方法,例如:UIImagePickerController
答案 0 :(得分:0)
喜欢这个
this.path = '/path/to/child/page';
使另一部分是动态的
<a [routerLink]="[lang, path]">{{lang}}</a>
在路线中指定路径
/:lang/path/to/child/page
答案 1 :(得分:0)
如果您使用相同的命名约定构建所有网址 - 第一个网址部分是您的语言 - 您可以使用下一个解决方案:
您的链接如下:
<a [routerLink]="['en', getContentUrl()]">Documents</a>
并且getContentUrl
可以是您的解析器服务的一部分,该服务获取当前网址并仅修剪与数据相关的路径(跳过第一部分)
constructor(private route: Router) {
}
getContentUrl() {
var urlParts = this.route.url.split('/');
urlParts.shift();
return urlParts.join('/');
}