据我从 Angular2 路由器文档中了解到,路由配置默认路径匹配策略是“前缀”, “前缀”路径匹配策略意味着应用路由器只需要查看 url 的开头并将其与正确的路由匹配。
引用:https://angular.io/docs/js/latest/api/router/index/Routes-type-alias.html#!#matching-strategy
也就是说,如果我导航到 /abcdefg
,我会假设通过以下配置,这条路由应该加载 ExampleComponent
。
一个问题是这不起作用,我不确定哪里出了问题,而且我无法在谷歌或@angular/router
源代码中找到很多关于此的信息。
感谢您的帮助。
const ROUTES: Routes = [
{ path: '', component: MainLayoutComponent, pathMatch: 'prefix', canActivate: [AuthGuard], children: [
{ path:'abc', pathMatch: 'prefix', component: ExampleComponent},
{ path: '', component: HomepageComponent }
]},
];
export const ROUTING = RouterModule.forRoot(ROUTES, { useHash: false });
更新 #1,尝试 Günter Zöchbauer 建议。
新的路由器配置是:
现在 /abc/defg
有效但 /abcdefg
无效
{ path:'abc', pathMatch: 'prefix',
children: [
{ path:'**', component:ExampleComponent},
]
}
最佳答案
如果你的 path: 'abc'
路由有一个子路由 path: 'defg'
或 path: '**'
或 path: 'de'
并且子路由有一个带有 path: 'fg'
的路由。
pathMatch: 'full'
表示整个 URL 路径需要匹配并被路由匹配算法消耗。
pathMatch: 'prefix'
意味着,选择路径与 URL 开头匹配的第一条路由,但随后路由匹配算法继续搜索匹配的子路由,其中其余部分URL 匹配。
关于Angular2 路由器配置,前缀路径匹配不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39945137/