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

Angular 15子模块组件多路由可访问,如何阻止路由重复注册?

解决Angular子模块路由双重注册问题

问题根源

你在AppModule的imports数组中直接导入了PagesSettingsModule,这会导致该模块的路由(通过PagesSettingsRoutingModule里的RouterModule.forChild注册的路由)直接合并到根路由配置里。同时你又在AppRoutingModule中用loadChildren懒加载该模块,相当于把同一份路由注册了两次:一次是不带/pages前缀的原始路由,一次是带/pages前缀的懒加载路由,因此两个URL都能访问到目标组件。

解决方案

步骤1:修改AppModule配置

从AppModule的imports数组中移除PagesSettingsModule,因为懒加载机制会在用户访问/pages开头的路由时自动加载该模块,无需提前导入。

修改后的AppModule代码:

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    AppRoutingModule,
    // 移除 PagesSettingsModule,保留其他必要模块
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { 
}

步骤2:保持其他模块配置不变

AppRoutingModule、PagesSettingsRoutingModule和PagesSettingsModule的当前配置无需修改,懒加载逻辑会自动为子模块路由添加/pages前缀,确保只有/pages/settings/projects能访问到ProjectSettingsComponent,而/settings/projects会返回404。

验证

修改完成后启动应用:

  • 访问/pages/settings/projects:正常加载组件(符合预期)
  • 访问/settings/projects:页面显示404(说明原始路由已被移除,双重注册问题解决)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:41:32