You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular12懒加载路由不生效,访问指定路径自动跳转dashboard如何解决?

问题原因

1. 根模块错误导入懒加载模块

你在app.module.ts的imports数组中手动引入了CoreModule、ClaimModule、DependentModule、ProfileModule四个配置了懒加载的模块,这会导致两个问题:

  • Angular会在应用启动时直接加载这些模块,不会触发你配置的懒加载逻辑
  • 这些模块内部的路由会优先注册,优先级高于AppRoutingModule中定义的懒加载路由规则

2. 通配符路由位置错误

你在core-routing.module.ts中配置了path: '**'的通配符路由,通配符路由会匹配所有未被前面规则命中的路径。由于CoreModule被提前导入到根模块,它内部的通配符路由会先于AppRoutingModule里的/profile、/dependent等路由生效,访问这些路由时会直接命中通配符规则,重定向到dashboard。

解决方案

第一步:删除根模块中手动导入的懒加载模块

修改app.module.ts的imports数组,移除四个懒加载模块的引入:

// app.module.ts
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    FormsModule,
    RouterModule,
    ModalModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

第二步:调整通配符路由位置

将core-routing.module.ts中的通配符路由移动到app-routing.module.ts所有路由的末尾(通配符路由必须放在全局路由的最后才能正常工作):

// app-routing.module.ts
const routes: Routes = [
  { path: 'login', component: LoginComponent },
  {
    path: '',
    canActivate: [AuthGuard],
    loadChildren: () => import('./core/core.module').then(m => m.CoreModule)
  },
  {
    path: 'dependent',
    canActivate: [AuthGuard],
    loadChildren: () => import('./modules/dependent/dependent.module').then(m => m.DependentModule)
  },
  {
    path: 'profile',
    canActivate: [AuthGuard], // 建议补充权限校验,避免未登录访问
    loadChildren: () => import('./modules/profile/profile.module').then(m => m.ProfileModule)
  },
  // 通配符路由移到此处
  {
    path: '**',
    redirectTo: '/dashboard',
    pathMatch: 'full'
  }
];

第三步:删除Core路由中的通配符规则

修改core-routing.module.ts,移除原有的通配符路由:

// core-routing.module.ts
const routes: Routes = [
  {
    path: '',
    component: LayoutComponent,
    children: [
      { path: '', redirectTo: '/dashboard', pathMatch: 'full' },
      { path: 'dashboard', loadChildren: () => import('./../modules/dashboard/dashboard.module').then(m => m.DashboardModule) },
    ]
  }
];

可选优化

如果你希望/profile、/dependent等路由也复用LayoutComponent的头部、侧边栏、页脚布局,可以将这些路由移动到core-routing.module.ts的children数组中,不需要在根路由配置。


内容的提问来源于stack exchange,提问作者Fahad Subzwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:36:03