如何让Angular带多级子模块的默认路由配置正常生效?
问题原因
- 核心原因1:ProviderAdminComponent 模板缺少
<router-outlet>占位符
Admin模块根路由挂载的ProviderAdminComponent作为父布局容器,所有子路由(包括重定向规则对应的目标页)的内容都需要渲染在该组件模板的<router-outlet>位置。如果缺少该标签,访问/admin时只会渲染ProviderAdminComponent本身的内容,子路由的重定向和内容都不会生效,就会出现接近空白的页面。
如果/admin/dashboard/default可以正常渲染,说明<router-outlet>配置是正常的,可直接跳过该排查项。 - 核心原因2:多嵌套层级下相对路径重定向匹配异常
多层子模块嵌套场景下,相对路径的重定向规则偶尔会出现层级匹配错误。你当前路由链路本身是通的,可以将Admin路由模块里的重定向规则改成绝对路径规避这个问题:// admin-routing.module.ts 修改重定向配置 { path: '', redirectTo: '/admin/dashboard/default', pathMatch: 'full' }
校验方法
如果修改后还是不生效,可以临时开启路由调试日志确认重定向是否触发:
// app-routing.module.ts 给forRoot添加配置 RouterModule.forRoot(routes, { enableTracing: true })
访问/admin时查看控制台的路由事件,若存在跳转到/admin/dashboard/default的NavigationEnd事件,说明重定向规则正常,问题出在组件渲染侧;如果没有该事件,需要检查是否存在其他同优先级的路由冲突,或者AdminRoutingModule是否正确导入到AdminModule中。
内容的提问来源于stack exchange,提问作者Paul Manson
相关产品推荐
相关产品推荐

