Angular2 路由器配置,前缀路径匹配不起作用

标签 angular angular2-routing

据我从 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/

相关文章:

angular - 在 Angular 4 中的某些其他脚本之后加载带有组件的 js 文件

angular - 子组件不更新父路由更改

Angular2-路由器 : How to only change a parameter of a route?

angular - 将 @media print 与 Angular 一起使用不起作用

javascript - 使用 TS 但不使用 NPM 在 Angular2 上进行开发

javascript - Angular2 - 防止 ngOnDestroy 发生

一旦部署在 Github 页面(子目录)上,Angular Service Worker 就不会缓存 Assets

Angular2 如何将路由参数绑定(bind)到变量

angular - 从我的主路由相对于子路由导航