我使用matcher
的{{1}}属性为我的应用定义路由规则,而不是通常的Route
属性。这是我第一次这样做,关于这个功能的文档非常缺乏。但是,我在UrlMatcher找到了很少的使用信息。
这是我修剪过的路线档案:
path
它可以在每个第一个请求(http://localhost:4200/clusters或http://localhost:4200/users等)上正常工作,但不会在每个第二个请求上运行(ResourceModule第二次没有加载)。
它适用于const registeredResources = [
'clusters',
'users',
'teams',
'repositories',
'records',
'projects',
'feeds',
'feedback'
];
function registeredResourcesOnly(url: UrlSegment[], group: UrlSegmentGroup, route: Route) {
return (url.length > 0) && (registeredResources.includes(url[0].path)) ? ({ consumed: [url[0]] }) : null;
}
export const APP_ROUTES: Routes = [
{
matcher: registeredResourcesOnly,
canActivate: [ AuthGuard ],
loadChildren: '../sb/resource/resource.module#ResourceModule',
}
];
,因此我认为它可能与合并path
和matcher
有关。