我工作的应用程序的一个要求是支持多个路由前缀。
即。 /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'创建两条单独的路线。和'存储'它工作正常。