我懒得在我的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
。我不确定,这里出了什么问题。请解决这个问题。
答案 0 :(得分:2)
您应该从已定义pathMatch: 'full'
的第一个path
中删除component: OrderManagementComponent
。
您不能将pathMatch
与component
结合使用。也许angular
应该已经抛出了错误。 pathMatch
用于重定向,这意味着如果您的路线中有pathMatch
属性,那么您也应该有redirectTo
。
我将不得不深入研究角度路由器的来源,看看它为什么会抛出这个错误:
无法匹配任何路线。网址细分:'订单管理/列表视图'
但是如果我不得不猜测,我认为它会看到pathMatch
属性,并尝试重定向。但重定向到什么?没有redirectTo
属性。我的猜测是它会尝试使用某个未知路径,可能使用undefined
,并且会抛出错误。