Angular Router仅部分路由跳转404,子路由错误无法跳转问题排查
Angular路由未知路径重定向问题处理
问题原因
根路由里的{ path: "**", redirectTo: "dashboard" }只负责匹配DefaultLayoutComponent的直接子路由(比如/home、/dashboard这类)。当访问/test/f0sjdf0sd时,路由会先匹配到test懒加载路由,接着进入TestModule的路由配置里找匹配项。如果TestModule内部没配置兜底的**路由,Angular找不到对应处理逻辑,就会出现无响应的情况。
你提到在test自身路由配置后没效果,大概率是TestModule的路由配置存在问题——要么兜底路由没放在所有子路由的最后,要么路径配置有误。
解决方案
- 给
TestModule添加兜底路由,必须放在所有子路由的最后(Angular路由是从上到下顺序匹配,兜底路由放前面会拦截正常路由)。 - 确保
TestModule的路由用RouterModule.forChild()配置,且正确完成导入导出。
TestModule路由配置示例
import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { TestComponent } from './test.component'; // 按需导入Test模块的其他组件,比如TestDetailComponent const routes: Routes = [ { path: '', // 对应父路由的/test,空路径即/test的默认子路由 component: TestComponent, children: [ // 这里放Test模块的正常子路由,比如: // { path: 'detail', component: TestDetailComponent }, // 兜底路由:匹配/test下所有未知路径,可重定向到dashboard或Test默认页 { path: '**', redirectTo: '/dashboard' } ] } ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) export class TestRoutingModule { }
额外提醒
- 懒加载模块的根路径(
path: '')对应父路由里的test,所以内部子路由都是基于/test的。 - 兜底路由的位置是关键,一定要放在所有子路由的最末尾,否则会导致正常子路由无法被匹配到。
内容的提问来源于stack exchange,提问作者user68288
相关产品推荐
相关产品推荐

