【发布时间】:2022-07-21 22:55:20
【问题描述】:
我想要什么
我想路由到 /edit/foo 并延迟加载正确的模块。
我得到了什么
当我尝试调用 /edit/foo 时出现错误:
错误:未捕获(承诺中):错误:无法匹配任何路由。 URL 段:'edit/foo'
我有什么:
我有一个带有两个路由器插座的组件:
<!-- vertical-splitscreen.component.html -->
<div class="container-fluid m-0 p-0">
<div class="row m-0 p-0">
<div class="col-12 col-md-7 m-0 p-0">
<router-outlet name="left"></router-outlet>
</div>
<div class="col-12 col-md-5 m-0 p-0">
<router-outlet name="right"></router-outlet>
</div>
</div>
</div>
我还有一个延迟加载的根树:
/* app-routing.module.ts */
const routes: Routes = [
{
path: '',
redirectTo: '/edit',
pathMatch: 'full'
},
{
path: 'edit',
loadChildren: () => import('./routes/edit-routing.module').then(m => m.EditRoutingModule),
canActivate: [AuthGuard],
},
];
.
/* edit-routing.module.ts */
const routes: Routes = [
{
path: '',
component: VerticalSplitscreenComponent,
children: [
{
path: '',
loadChildren: () => import('../modules/preview/preview.module').then(m => m.PreviewModule),
outlet: 'left',
},
{
path: '',
loadChildren: () => import('../modules/edit-form/edit-form.module').then(m => m.EditFormModule),
outlet: 'right',
},
],
}
];
.
/* edit-form-routing.module.ts */
const routes: Routes = [
{
path: 'foo',
component: EditFormComponent,
},
];
什么让我困惑
当我删除插座的名称“right”时,它可以工作。检查以下更改:
在vertical-splitscreen.component.html中
<router-outlet name="right"></router-outlet>
变成
<router-outlet></router-outlet>
并在edit-routing.module.ts 行
outlet: 'right',
必须删除。
结论和问题
实际上它应该可以工作,但它没有,因为有一个命名的插座。那么,有什么建议或解决方法可以让它发挥作用吗?
【问题讨论】:
标签: angular routes lazy-loading angular13