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

Angular 12子路由点击后自动跳转回父路由问题排查

问题根因

故障是点击子路由链接时,点击事件冒泡到外层绑定了routerLink="data"的<mat-expansion-panel>组件,触发了两次路由导航:第一次是子路由跳转,第二次是父级面板跳转到/data的路由,两次导航冲突导致后一次覆盖前一次,因此出现短暂加载子组件后跳回父路由的情况。日志输出的NavigationCancel - navigation id is not equal to the current navigation id就是两次导航冲突的典型报错。

解决方案

你可以任选以下一种方法修复:

  • 给子路由列表项添加点击事件阻止冒泡
    在每个子路由的<mat-list-item>标签上添加(click)="$event.stopPropagation()",阻止点击事件向上传递到外层面板,避免触发父级路由跳转,修改后代码示例:
    <mat-list-item
      class="sidebar-item"
      routerLink="data/appdata"
      (click)="$event.stopPropagation()"
    ><mat-icon>arrow_right</mat-icon> App Data
    </mat-list-item>
    
  • 调整外层面板的路由绑定逻辑
    如果不需要点击整个展开面板就触发/data路由跳转,直接删除<mat-expansion-panel>上的routerLink="data"和routerLinkActive="selected"属性即可。如果需要保留面板头部的跳转功能,仅给<mat-expansion-panel-header>单独绑定路由,不要给整个面板绑定,也能避免内部点击触发父级路由。

你当前的路由配置、相对路径写法均无问题,无需额外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:30:04