【发布时间】:2018-11-24 09:39:29
【问题描述】:
如果我的第二个路由器插座总是被忽略,你知道我的配置可能有什么问题吗?这是我的 app.module 路由(app.component 有一个路由器出口):
const routes: Routes = [
{
path: 'home',
loadChildren: './home/home.module#HomeModule',
canLoad: [AuthorizationGuard]
},
{
path: 'please-login',
component: PleaseLoginComponent
},
{
path: '**',
redirectTo: 'please-login'
}
];
这是我的 home.module-routing(HomeComponent 有另一个路由器出口):
RouterModule.forChild([
{
path: '',
pathMatch: 'full',
component: HomeComponent,
children: [
{
path: 'welcome',
component: WelcomeComponent
}
]
},
{
path: '**',
redirectTo: 'welcome'
},
{
path: 'Data',
loadChildren: '@libs/data#DataModule'
}
]),
我可以毫无问题地加载 DataModule;它引导我到 /home/data/blabla。但是(!)它将 DataComponent 插入到第一个路由器插座中。第二个(因此应该围绕 DataComponent 的整个 HomeComponent)被忽略。也就是说,除非我导航到 /home,否则它会显示,但正如预期的那样,里面没有 DataComponent。这意味着我只能以独占方式使用这两个组件,而不能嵌套使用。
我尝试使用命名插座,但没有成功。当我跟踪记录路由器状态时,解析似乎没问题,所以我有点迷失在这里
【问题讨论】:
-
home 组件中的 router-outlet 是匹配子路由的组件将被插入的地方。您的主路线有一个子路线“欢迎”。所以如果你去 /home/welcome,WelcomeComponent 将被插入那里。对于任何其他路由,您不会在默认主路由的子路由中,因此不会插入任何内容。
-
@JBNizet 谢谢,我已经相应地调整了我的代码(我认为你和 SiddAjmera 的想法相同)。但我仍然收到此配置的错误(请参阅我对答案的评论)。你知道为什么吗?
-
@Phil,从 JBNizet 获得了很大的收获,我更新了我的答案。这应该可以解决问题。