Angular 5无法匹配延迟加载模块的命名出口上的任何路由

时间:2017-11-26 09:15:46

标签: angular angular-router routerlink router-outlet

我的根模块路由是这样的:

        RouterModule.forRoot([
        { path: '', redirectTo: 'management-portal', pathMatch: 'full' },            
        { path: 'management-portal', loadChildren: './xxx/management-portal.module#ManagementPortalModule', canActivate: [AuthGuard] },          
        { path: 'login', component: LoginComponent },
        { path: '**', component: NotFoundComponent }
    ], {
       enableTracing: true 
    })

它按预期工作,我可以在登录后路由到ManagementPortalModule。让我们来看看我的懒惰的ManagementPortalModule。

有一个名为路由器插座。

 <router-outlet name='sub'></router-outlet>

我在ManagementPortalModule中的路线。

    RouterModule.forChild([
  {
    path: '', component: ManagementPortalComponent,        
    children: [            
        { path: '', component: Test1Component, outlet: 'sub' },
        { path: 'test2', component: Test2Component, outlet: 'sub' }            
    ]
  }         
])

它可以在开头的'sub'出口加载Test1Component。我想点击链接

时路由到Test2Component
<a  [routerLink]="[{ outlets: { sub: ['test2'] } }]"></a>

生成的Url

  

/管理门户/(子:TEST2)

当我点击时没有发生任何事情。然后我尝试了

<a [routerLink]="['',{ outlets: { sub: ['test2'] } }]">

地址

  

/管理门户(子:TEST2)

根据this,我认为网址格式正确,点击后出现错误

  

无法匹配任何路线。网址细分:'test2'

请帮助,非常感谢!

1 个答案:

答案 0 :(得分:7)

尝试使用命名出口路由的非空顶级路径。

在ManagementPortalModule中路由。

    RouterModule.forChild([
  {
    path: 'load', component: ManagementPortalComponent,        
    children: [            
        { path: '', component: Test1Component, outlet: 'sub' },
        { path: 'test2', component: Test2Component, outlet: 'sub' }            
    ]
  }         
])

有关详细信息,请参阅:Angular 4 Lazy loading with named router-outlet not working