在Angular 6中的网址栏上隐藏语言默认设置

时间:2018-08-13 05:15:09

标签: angular router angular6

我是新手,我在Angular 6中遇到路由器问题。 我有三种语言:en,de,fr。所以现在,我在地址栏上的网址是:

  • 本地主机:4200 / en / home
  • 本地主机:4200 / de / home
  • 本地主机:4200 / fr / home

但是我想要使用En(默认语言),我的网址应如下所示:

  • 本地主机:4200 / home

剩下的是:

  • 本地主机:4200 / de / home
  • 本地主机:4200 / fr / home

这是我的配置路线:

 const routes: Routes = [
     {
        path: ':lang/home',
        component: LandingPageComponent,
        children: LandingPagePageRoutes
     },
     {
        path: ':lang/product',
        component: ProductSinglePageComponent,
        children: ProductPageRoutes
     },
     {
        path: '',
        redirectTo: `/${LANG}/home`,
        pathMatch: 'full'
     },
     {
        path: '**',
        redirectTo: `/${LANG}/home`,
     }
 ];

我们能做到吗?如果是,请给我发送一些例子吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

因为Angular不允许从另一个重定向进行重定向,所以我认为可以做到这一点的一种方法是,在根组件的构造函数中,可能是app.component.ts,当出现以下情况时,您可以获取页面的网址:应用启动,然后重定向到localhost:4200/home(如果它是localhost:4200/en/home)。您的代码将如下所示。

app.component.ts

import { Router } from '@angular/router';

constructor(private router: Router) {
  if(this.router.url === "/en/home"){
        router.navigateByUrl('/home')
    }
 }

然后在路由模块中,您应该具有一个与/home匹配的网址

这样的事情。

 {
    path: 'home',
    component: EnglishLandingPageComponent
 }