我的应用程序组件中有几个路由器插座。除了一个,其他都有名字。
<router-outlet name="menu"></router-outlet>
<router-outlet></router-outlet>
<router-outlet name="sidebar"></router-outlet>
目前,我的根路由配置指定以下内容:
[
{
path: 'mypath',
loadChildren: () => import('./my-main.module').then((m) => m.MyMainModule)
}
]
延迟加载的“主模块”路由配置如下所示:
[
{
path: ':myMainId',
resolve: { myMainData: MyMainDataResolver },
children: [
{
path: ':mySubId',
resolve: { mySubData: MySubDataResolver },
loadChildren: () =>
import('./my-sub.module').then((m) => m.MySubModule) // Needs mySubData
},
{ path: '', component: MyMainComponent } // Needs myMainData
],
},
{ path: '', component: MenuComponent, outlet: 'menu' }
]
最后,我的延迟加载的“子模块”路由配置如下所示:
[{ path: '', component: MySubComponent, outlet: 'sidebar' }]
使用上述配置,我的 MyMainComponent 不会加载(未调用构造函数/onInit)。但是,如果我给默认路由器出口一个名称并在路由配置中的 for MyMainComponent 中指定出口名称,则所有组件都会呈现。
类似地,如果我删除 url 的 :mySubId 段,并让主出口无名,MyMainComponent 会渲染。
所以,MyMainComponent 的路由和 MySubComponent 的路由(或其父路由)之间似乎发生了某种冲突。
我怀疑这与这两条路线都是空的有关,并且可能都以某种方式匹配,但我不明白当一条指定了出口而另一条没有指定出口时会怎样。
提前感谢您提供的任何帮助。