翻译我的 Url Angular 2 - Typescript

Translate my Url Angular 2 - Typescript

Angular2 - TypeScript - ng-Translate

大家好,

我需要根据所选的语言 "en/soybean"、"fr/soya" 来更改 url 的其余部分。在我的 app.routes 中,我得到了这条路径:

{ path: ':lang/soybean', component: SoybeanComponent }

我的 SoyBean 组件是使用 ng-translate 从 lang 参数翻译而来

this.route.params.subscribe(params => {
   translate.use(params['lang']);
})

如何将 url 显示为 fr/soya 但仍使用路径 fr/soybean !?

我试过的

*我创建了一个新路径:{ path: ':lang/soya', component: SoybeanComponent }, 我想我可以将用户重定向到好的路径 :

 if(params['lang'] === 'en'){
       this.router.navigateByUrl('lang/soybean');
    }
    if(params['lang'] === 'fr'){
       this.router.navigateByUrl('lang/soya');
    }

但它会导致无限加载。
然后我想我可以在重定向后对 lang 参数进行硬编码:

if(params['lang'] === 'en'){
       this.router.navigateByUrl('en/soybean');
    }
    if(params['lang'] === 'fr'){
       this.router.navigateByUrl('fr/soya');
    }

但在这种情况下我会捕获异常。*

你太复杂了:-)。 刚刚使用了带反引号的模板字符串

url = `${lang}/${i18name}`

我用 location.replace(newUrl)

找到了自己的解决方案

我创建了一条新路径:{ path: ':lang/soya', component: SoybeanComponent }

在我的组件中我使用 location.replace(url)

 this.route.params.subscribe(params => {
            translate.use(params['lang']);
            switch (params['lang']) {
                case 'en':
                    location.replace(`index.html#/${params['lang']}/soybean`)
                        break;
                case 'fr':
                    location.replace(`index.html#/${params['lang']}/soya`);
                        break;
            }

        })

这对我有用!如果您知道更好的解决方案,我会很高兴听到它!谢谢!