【问题标题】:Error: Cannot match any routes in Angular 4错误:无法匹配 Angular 4 中的任何路由
【发布时间】:2018-05-03 10:40:29
【问题描述】:

我在我的 Angular 4 应用程序中延迟加载了几个模块,子路由到延迟加载的模块,但是在访问路由时我收到了 Error: Cannot match any routes. URL Segment: 'order-management/list-view' 的错误。

这是我的主要应用路由代码:

  {path: 'login', component: LoginComponent},
  {path: 'order-management', loadChildren: './order-management/order-management.module#OrderManagementModule'},
  {path: '', redirectTo: '/login', pathMatch: 'full'}

这是延迟加载OrderManagementModule的路由代码:

    {path: '', component: OrderManagementComponent, pathMatch: 'full', children: [
        {path: 'list-view', component: ListComponent},
        {path: 'column-view', component: ColumnComponent},
        {path: 'comfy-view', component: ComfyComponent},
        {path: '', redirectTo: '/order-management/list-view', pathMatch: 'full'},
  ]}

假设代码加载路径/order-management/SOME_CHILD_COMPONENT 中的每个子组件,并将/order-management 路径重定向到/order-management/list-view。我不确定,这里出了什么问题。请解决这个问题。

【问题讨论】:

  • 您能否从OrderManagementComponent 路径中删除pathMatch: 'full'。还将redirectTo 设置为list-view
  • @PierreDuc 成功了!但是你能解释一下,pathMatch: 'full' 是什么时候引起这个问题的。
  • 我已经添加了一个答案以供将来参考:)

标签: javascript angular angular-routing


【解决方案1】:

您应该从已定义component: OrderManagementComponent 的第一个path 中删除pathMatch: 'full'

您不能将pathMatchcomponent 结合使用。也许angular 应该已经为此抛出了一个错误。 pathMatch 用于重定向,这意味着如果你的路由中有一个pathMatch 属性,那么你也应该有一个redirectTo

我将不得不深入研究角度路由器的来源,看看它为什么会抛出这个错误:

无法匹配任何路线。 URL 段:'订单管理/列表视图'

但如果我不得不猜测,我认为它看到了pathMatch 属性,并尝试重定向。但是重定向到什么?没有redirectTo 属性。我的猜测是它尝试了一些未知的路线,可能是undefined,它会抛出一个错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 2019-01-16
    • 1970-01-01
    • 2022-08-18
    • 2020-04-21
    • 1970-01-01
    • 2018-01-05
    相关资源
    最近更新 更多