Angular 角度路由器参数匹配正则表达式
我想用一种匹配字符串数组或正则表达式的语言开始我的所有urlAngular 角度路由器参数匹配正则表达式,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', },
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:)