Angular 6路由器-替换当前路由的某些参数

时间:2018-10-06 20:44:13

标签: angular angular6 angular-routing

在我的Angular 6解决方案中,URL具有以下结构:

/ {语言} / {app_section} / {object_id} / {view}?queryparams ...

语言选择器组件由应用程序的所有部分共享,并包含在父路由之一的模板中,以便它出现在所有子路由中。

当用户选择一种新语言时,该组件应仅替换当前路线的{language}段,而其他所有内容均保持不变,然后导航至新路线。看起来应该很简单,但是我似乎找不到简单的方法。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

是可以的。阅读当前路线,替换语言并导航到该URL。

constructor(private _router: Router ) {
}

languageSelected(newLanguage) {
  const newUrl = this._router.url.replace(this.currentlanguage, newLanguage);
  this.router.navigateByUrl(newUrl);
}

我假设this.currentLanguage所包含的语言与URL中所表示的语言完全相同,并且传递给该方法的newLanguage也是URL所要求的形式。诸如此类的技术将触发组件刷新,并且临时状态将丢失。