在我的Angular 6解决方案中,URL具有以下结构:
/ {语言} / {app_section} / {object_id} / {view}?queryparams ...
语言选择器组件由应用程序的所有部分共享,并包含在父路由之一的模板中,以便它出现在所有子路由中。
当用户选择一种新语言时,该组件应仅替换当前路线的{language}段,而其他所有内容均保持不变,然后导航至新路线。看起来应该很简单,但是我似乎找不到简单的方法。有人可以帮忙吗?
答案 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所要求的形式。诸如此类的技术将触发组件刷新,并且临时状态将丢失。