Angular路由缺少父路由段时如何避免NG04002错误?
Angular路由缺少父路由段时如何避免NG04002错误?
嗨,这种情况我之前也碰到过,其实问题的核心是:虽然你直接访问settings/global这类路径没问题,但你的应用里大概率有某个地方(比如菜单的默认选中逻辑、路由守卫的跳转、或者不小心写错的导航代码)在触发对/settings这个单独路径的请求,而你没配置这个路由,所以Angular就抛出了NG04002错误。
给你几个实用的解决办法,按需选就行:
添加重定向路由(最推荐):
直接在你的路由配置里加一条重定向规则,把settings路径指向你默认的设置页面(比如settings/global),这样即使有请求到/settings,Angular也会自动跳转到对应的子页面,不会报错。代码如下:{path: "settings", redirectTo: "settings/global", pathMatch: "full"}, // 然后再放你原来的三条路由 {path: "settings/global", component: GlobalSettingsEditComponent, ...}, {path: "settings/tenant", component: TenantSettingsEditComponent, ...}, {path: "settings/license", component: LicensePageComponent, ...}这里的
pathMatch: "full"很重要,它确保只有当完整路径是settings时才会触发重定向,不会影响settings/xxx这类子路径的匹配。排查并修正误触发的导航:
检查你的菜单组件、路由守卫、或者任何调用router.navigate的地方,看看是不是有代码不小心跳转到了['settings']或者'/settings'。比如菜单的某个选项是不是把路由地址写错了,或者默认选中逻辑里误触发了这个路径。找到后改成对应的子路径(比如settings/global)就行。添加空路由占位(不推荐,但应急可用):
如果你不想做重定向,也可以给settings路径配一个空组件或者直接用Component类占位,但这样用户访问/settings时会看到空白页面,体验不好,所以还是重定向更合理。
备注:内容来源于stack exchange,提问作者Master_T
相关产品推荐
相关产品推荐

