Угловые маршруты, соответствующие путям, начинающимся с - PullRequest
0 голосов
/ 01 мая 2018

Одно требование к приложению, с которым я работаю, - поддержка нескольких префиксов маршрута.

т.е. /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 и вместо этого создаю два отдельных маршрута для «магазина» и «магазина», все работает нормально.

...