Angular 6:进行复杂URL匹配的最佳方法

时间:2019-03-09 10:01:48

标签: angular6 angular-routing

我有一个类似的网址

: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行函数对我来说很麻烦。

0 个答案:

没有答案