Angular 角度:嵌套路由器出口始终被忽略

Angular 角度:嵌套路由器出口始终被忽略,angular,angular-routing,Angular,Angular Routing,如果我的第二个路由器出口总是被忽略,你知道我的配置有什么问题吗?这是我的app.module路由(app.component有一个路由器出口): 这是my home.module-routing(HomeComponent有另一个路由器出口): 我可以毫无问题地加载数据模块;它指引我到/home/data/blabla。但是(!)它将DataComponent插入第一个路由器出口。第二个组件(因此整个HomeComponent应该围绕DataComponent)被忽略。也就是说,除非我导航到/h

如果我的第二个路由器出口总是被忽略,你知道我的配置有什么问题吗?这是我的app.module路由(app.component有一个路由器出口):

这是my home.module-routing(HomeComponent有另一个路由器出口):

我可以毫无问题地加载数据模块;它指引我到/home/data/blabla。但是(!)它将DataComponent插入第一个路由器出口。第二个组件(因此整个HomeComponent应该围绕DataComponent)被忽略。也就是说,除非我导航到/home,否则它会显示出来,但正如预期的那样,里面没有DataComponent。这意味着我只能以独占方式使用这两个组件,而不能嵌套


我尝试使用命名的插座,但没有成功。当我跟踪记录路由器状态时,解析似乎正常,因此我在这里有点不知所措

以使
数据组件
加载到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'
      }
    ]
  },
  ...
]),