我有一个类似的网址
:mode/:var_a/:var_b/:var_c
var_a,var_b和var_c可以包含所有内容。但是只有在mode为“ mode_a”或“ mode_b”时,URL才应匹配。
我写了这样的东西:
{
loadChildren: './pages/mypage/mypage.module#MyPageModule',
matcher: (url) => {
if (url.length === 4) {
if (["mode_a", "mode_b"].indexOf(url[0].path) > -1) {
return {
consumed: url,
posParams: {
mode: url[0],
var_a: url[1],
var_b: url[2],
var_c: url[3]
}
};
}
}
return null;
}
},
这可行,但是对我来说有点麻烦。是否可以使用正则表达式,如:
{
path: ':{id(mode_a|mode_b)}/:var_a/:var_b/:var_c'
loadChildren: './pages/search/search.module#SearchPageModule',
},
还是另一种方式?正如我所说,为这种简单情况编写11行函数对我来说很麻烦。