Angular 角度:嵌套路由器出口始终被忽略
如果我的第二个路由器出口总是被忽略,你知道我的配置有什么问题吗?这是我的app.module路由(app.component有一个路由器出口): 这是my home.module-routing(HomeComponent有另一个路由器出口): 我可以毫无问题地加载数据模块;它指引我到/home/data/blabla。但是(!)它将DataComponent插入第一个路由器出口。第二个组件(因此整个HomeComponent应该围绕DataComponent)被忽略。也就是说,除非我导航到/home,否则它会显示出来,但正如预期的那样,里面没有DataComponent。这意味着我只能以独占方式使用这两个组件,而不能嵌套Angular 角度:嵌套路由器出口始终被忽略,angular,angular-routing,Angular,Angular Routing,如果我的第二个路由器出口总是被忽略,你知道我的配置有什么问题吗?这是我的app.module路由(app.component有一个路由器出口): 这是my home.module-routing(HomeComponent有另一个路由器出口): 我可以毫无问题地加载数据模块;它指引我到/home/data/blabla。但是(!)它将DataComponent插入第一个路由器出口。第二个组件(因此整个HomeComponent应该围绕DataComponent)被忽略。也就是说,除非我导航到/h
我尝试使用命名的插座,但没有成功。当我跟踪记录路由器状态时,解析似乎正常,因此我在这里有点不知所措以使
数据组件
加载到HomeComponent的路由器出口
(这意味着您还必须将
添加到HomeComponent
模板中),您必须将数据
作为'
路径的子级
您必须做的另一件事是从'
路由中删除pathMatch:“full”
。它将做的是,尝试在块中匹配路径,即,如果'
匹配,它将尝试检查任何匹配的子路由
最后,我不确定这是否是打字错误,但路径应该是data
,而不是data
所有这些都将转化为如下代码:
RouterModule.forChild([
{
path: '',
component: HomeComponent,
children: [
{
path: 'data',
loadChildren: '@libs/data#DataModule'
},
{
path: 'welcome',
component: WelcomeComponent
},
{
path: '**',
redirectTo: '/welcome',
pathMatch: 'full'
}
]
},
...
]),
主组件中的路由器出口是将插入匹配子路由的组件的位置。您的家庭路线有一个单子路线“欢迎”。因此,如果您转到/home/welcome,welcome组件将插入其中。对于任何其他路由,您不会处于默认主路由的子路由中,因此不会插入任何内容。@JBNizet谢谢,我已相应地调整了代码(我认为您和SiddAjmera有相同的想法)。但是这个配置仍然会出错(请参阅我对答案的评论)。你知道为什么吗?@Phil,JBNizet给了我一个很好的提示,我更新了我的答案。那就行了,谢谢你。但不幸的是,我得到了
错误:无法匹配任何路由。使用此配置从登录(/login)重定向后的URL段:“主页/欢迎”
。你知道为什么吗?删除基本路线的路径匹配:“已满”。@JBNizet,啊哈。抢手货谢谢:)谢谢大家!它可以在没有补丁匹配的情况下工作:“完整”!
RouterModule.forChild([
{
path: '',
pathMatch: 'full',
component: HomeComponent,
children: [
{
path: 'welcome',
component: WelcomeComponent
}
]
},
{
path: '**',
redirectTo: 'welcome'
},
{
path: 'Data',
loadChildren: '@libs/data#DataModule'
}
]),
RouterModule.forChild([
{
path: '',
component: HomeComponent,
children: [
{
path: 'data',
loadChildren: '@libs/data#DataModule'
},
{
path: 'welcome',
component: WelcomeComponent
},
{
path: '**',
redirectTo: '/welcome',
pathMatch: 'full'
}
]
},
...
]),