使用angular2路由器重新加载具有不同参数的当前状态

时间:2017-01-31 12:00:58

标签: angular angular-routing

这是我路由器的一个例子:

/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

2 个答案:

答案 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('/');
}