Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度路由器参数匹配正则表达式_Angular_Angular Router - Fatal编程技术网

Angular 角度路由器参数匹配正则表达式

Angular 角度路由器参数匹配正则表达式,angular,angular-router,Angular,Angular Router,我想用一种匹配字符串数组或正则表达式的语言开始我的所有url const languages=['nl','en','de','fr']或const languagesegex=/(nl | en | de | fr)/g 我的路线图如下 const appRoutes: Routes = [ { path: '', pathMatch: 'full', redirectTo: 'en/configuration', },

我想用一种匹配字符串数组或正则表达式的语言开始我的所有url

const languages=['nl','en','de','fr']
const languagesegex=/(nl | en | de | fr)/g

我的路线图如下

const appRoutes: Routes = [
    {
        path: '',
        pathMatch: 'full',
        redirectTo: 'en/configuration',
    },
    {
        children: [
            { path: '', pathMatch: 'full', redirectTo: 'configuration' },
            {
                loadChildren:
                    '../modules/booking-flow/configuration.module#ConfigurationModule',
                path: RouteHelper.paths.configuration,
            },
            {
                loadChildren:
                    '../modules/booking-flow/personal-info.module#PersonalInfoModule',
                path: RouteHelper.paths.personalInfo,
            },
            {
                loadChildren:
                    '../modules/booking-flow/summary.module#SummaryModule',
                path: RouteHelper.paths.summary,
            },
            {
                loadChildren:
                    '../modules/booking-flow/payment-method.module#PaymentMethodModule',
                path: RouteHelper.paths.paymentMethod,
            },
            {
                loadChildren:
                    '../modules/booking-flow/confirmation.module#ConfirmationModule',
                path: RouteHelper.paths.confirmation,
            },
            {
                component: ErrorPageComponent,
                path: RouteHelper.paths.errorNotFound,
            },
            {
                path: '**',
                pathMatch: 'full',
                redirectTo: RouteHelper.paths.errorNotFound,
            },
        ],
        component: null,
        path: ':language',
        runGuardsAndResolvers: 'always',
    },
];
遗憾的是,这不起作用,在我看来,这是一个相当可读的配置:

path:':语言(/nl | en | de | fr/g)

我想得到以下模式

  • /
    重定向到
    /en/configuration
    工作
  • /nl
    重定向到
    /nl/configuration
    工作
  • /es
    重定向到
    404
    不起作用
  • /es/configuration
    重定向到
    404
    不起作用
  • /en/invalid
    重定向到
    /en/404
    工作

    • 我认为有更好的方法来解决你的问题;如果您的问题确实与在应用程序中支持不同的语言有关

      是一个受支持的、众所周知的/有文档记录的库,允许您对应用程序进行国际化,而无需太多麻烦

      该库允许您提供应用程序支持的语言,您将提供JSON文件,其中包含您所支持的每种语言所需的正确语言翻译

      它们看起来像这样:

      {
          "title": "My title"
      }
      
      <span translate>title</span>
      
      <span> {{ 'title' | translate }}</span>
      
      该库提供管道、指令,可在HTML中使用,如下所示:

      {
          "title": "My title"
      }
      
      <span translate>title</span>
      
      <span> {{ 'title' | translate }}</span>
      
      标题
      {{'title'| translate}}
      
      两者都将在span元素中呈现
      My Title


      该库允许您执行更多操作,例如参数插值,您可以将动态值传递给翻译。它还为您提供在代码中进行翻译的服务。

      我认为有更好的方法来解决您的问题;如果您的问题确实与在应用程序中支持不同的语言有关

      是一个受支持的、众所周知的/有文档记录的库,允许您对应用程序进行国际化,而无需太多麻烦

      该库允许您提供应用程序支持的语言,您将提供JSON文件,其中包含您所支持的每种语言所需的正确语言翻译

      它们看起来像这样:

      {
          "title": "My title"
      }
      
      <span translate>title</span>
      
      <span> {{ 'title' | translate }}</span>
      
      该库提供管道、指令,可在HTML中使用,如下所示:

      {
          "title": "My title"
      }
      
      <span translate>title</span>
      
      <span> {{ 'title' | translate }}</span>
      
      标题
      {{'title'| translate}}
      
      两者都将在span元素中呈现
      My Title


      该库允许您执行更多操作,例如参数插值,您可以将动态值传递给翻译。它还为您提供在代码中进行翻译的服务。

      因此,正如我所见,仅通过路由器配置是无法实现这一点的,它没有这样的功能。相反,您可以使用RouteGuard来检查
      语言
      参数是否在
      ['nl','en','de','fr']
      中,如果没有,您只需返回未找到页面的UrlTree(在角度为7.1+的情况下)或使用router手动重定向用户(angular因此,正如我所看到的,仅通过路由器配置无法实现这一点,它没有这样的功能。相反,您可以使用RouteGuard来检查
      语言
      参数是否在
      ['nl','en','de','fr']
      中,如果没有,您可以返回UrlTree(在angular 7.1+的情况下)未找到页面的或使用路由器手动重定向用户(谢谢你给我指出了正确的方向,现在它工作了。我太专注于路由器参数了,忘记了所有的警卫。当然,我很高兴它帮助了汉克斯给我指出了正确的方向,现在它工作了。我太专注于路由器参数了,忘记了所有的警卫。当然,我很高兴它已经帮助我使用ngx translate,但使用pre-render,我希望创建每种语言版本的静态文件(URL)以提高性能。现在编译时只需解析翻译的JSON:)已使用ngx translate,但使用pre-render,我希望创建静态文件(URL)为了提高性能,现在编译时只需解析翻译的JSON:)