角度路由器匹配以。开头的路径

时间:2018-05-01 14:29:43

标签: angular typescript angular2-routing

我工作的应用程序的一个要求是支持多个路由前缀。

即。 /shop/store都应匹配。我使用自定义UrlMatcher实现了这一点:

matchPathsStartingWith(startingWith: string[]) {
    return (url: UrlSegment[]): UrlMatchResult => {
      if (url.length) {
        let s = url.map(u => u.path).join('/');
        console.log(s);
        if (startingWith.includes(url[0].path)) {
          return { consumed: url };
        }
      }
      return null;
    };
  }

我使用如下:

  {
    matcher: new UrlPathMatcher().matchPathsStartingWith([
      'store',
      'shop',
    ]),
    loadChildren:
      'app/store.module#StoreModule',
  },

然后在我的商店模块中,我定义了以下路线:

const routes: Routes = [
  {
    path: '',
    component: StoreDashboardComponent,
  },
  {
    path: 'products',
    component: ProductsListComponent,
  },
];

我面临的问题是,这只会匹配第一条路线(即StoreDashboardComponent,而不是ProductsListComponent。我假设这是由于返回的原因我的自定义匹配器功能。

我应该返回什么来实现所需的功能?

编辑:如果我完全摆脱了URLMatcher,而是为' shop'创建两条单独的路线。和'存储'它工作正常。

0 个答案:

没有答案