Angular 如何将子组件设置为路由器出口的默认路由?
我正在使用Angular 如何将子组件设置为路由器出口的默认路由?,angular,lazy-loading,angular-routing,Angular,Lazy Loading,Angular Routing,我正在使用Lazyloading,我有两个路由器插座。当我想导航到另一个子路由时,就会出现问题。我得到这个错误 TypeError:无法读取未定义的属性“split” 在defaultUrlMatcher上(router.js:566) 在比赛中(router.js:2221) 我的主应用程序路由器模块看起来像 const appRoutes: Routes = [ { path: '', redirectTo: 'web/welcome' , pathMatch: 'full' },
Lazyloading
,我有两个路由器插座
。当我想导航到另一个子路由时,就会出现问题。我得到这个错误
TypeError:无法读取未定义的属性“split”
在defaultUrlMatcher上(router.js:566)
在比赛中(router.js:2221)
我的主应用程序路由器模块看起来像
const appRoutes: Routes = [
{ path: '', redirectTo: 'web/welcome' , pathMatch: 'full' },
{ path: 'web', redirectTo: 'web/welcome' , pathMatch: 'full' },
{
path: 'web',
loadChildren: 'app/core/website/modules/website.module#WebSiteModule',
data: { preload: true }
},
{
path: 'dbapp', canActivate: [AuthGuardService],
loadChildren: 'app/core/database/modules/db.module#DbModule',
data: { preload: true }
},
{ path: '**', redirectTo: '/404', pathMatch: 'full'},
{ path: '**', component: NotFoundComponent, data: { message: 'We Could Not Serve Your Request!'}},
];
对于dbapp
我有这个路由模块
const dbRoutes: Routes = [
{
path: '',
component: DbHomeComponent,
data: { preload: true },
pathMatch: 'full',
children: [
{ path: '', component: UserDashboardComponent },
{
path: 'registry',
canActivate: [RoleGuardService],
data: { expectedRole: { roles: ['reg'] } },
loadChildren:
'app/core/database/database-cores/registry-core/modules/registry.module#RegistryModule'
// canActivateChild: [RoleGuardService]
},
{
path: 'embryology',
canActivate: [RoleGuardService],
data: { expectedRole: { roles: ['emb'] } },
loadChildren:
'app/core/database/database-cores/embryology-core/modules/embryology-routing.module#EmbryologyRoutingModule'
},
{
path: 'nursing',
canActivate: [RoleGuardService],
data: { expectedRole: { roles: ['nur'] } },
loadChildren:
'app/core/database/database-cores/embryology-core/modules/embryology-routing.module#EmbryologyRoutingModule'
}
]
},
];
我的地图如下所示
路由器地图,带下划线的组件
是路由器出口
所以根据我的配置。路由从https://www.artngcore.com:4200/web/welcome
认证后,路由更改为https://www.artngcore.com:4200/dbapp
我设法导航到UserDashboardComponent
作为默认路由,如果我路由到其他子级,即routerLink=“/dbapp/registry”
如何将子组件显示为默认路由并导航到其他子路由?已解决,答案来自 所以我的
dbapp
路由模块应该是这样的
const dbRoutes: Routes = [
{
path: '',
component: DbHomeComponent,
data: { preload: true },
children: [
{ path: '', component: UserDashboardComponent },
{
path: 'registry',
canActivate: [RoleGuardService],
data: { expectedRole: { roles: ['reg'] } },
loadChildren:
'app/core/database/database-cores/registry-core/modules/registry.module#RegistryModule'
// canActivateChild: [RoleGuardService]
},
{
path: 'embryology',
canActivate: [RoleGuardService],
data: { expectedRole: { roles: ['emb'] } },
loadChildren:
'app/core/database/database-cores/embryology-core/modules/embryology-routing.module#EmbryologyRoutingModule'
},
{
path: 'nursing',
canActivate: [RoleGuardService],
data: { expectedRole: { roles: ['nur'] } },
loadChildren:
'app/core/database/database-cores/embryology-core/modules/embryology-routing.module#EmbryologyRoutingModule'
}
]
}
];
我所要做的就是更改路由匹配策略,
pathMatch:“full”
不应包括在内您是使用了什么自动生成路由器图形,还是手动创建的?@Zze我正在使用