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

Angular懒加载路由routerLink正常但router.navigate跳转失败问题

问题原因

Router.navigate方法默认从应用根路由开始匹配路径,而模板里的[routerLink]指令默认基于当前组件所在的激活路由做相对路径匹配,因此直接给navigate方法传['edit']会试图匹配根路由下的edit路径,和你实际的路由结构不匹配。
你之前尝试用/edit失败是因为/开头的路径属于根路由绝对路径,你的根路由下没有注册edit路径,该路径实际挂载在懒加载的something父路由下。

解决方法

方案1:使用相对路由匹配(和模板routerLink行为一致)

给navigate方法传入relativeTo配置项,指定基于当前激活路由匹配路径,需要先注入ActivatedRoute实例:

import { ActivatedRoute, Router } from '@angular/router';

// 构造器注入
constructor(
  private _router: Router,
  private _activatedRoute: ActivatedRoute
) {}

public tryToNavigate(): void {
  this._router.navigate(['edit'], { relativeTo: this._activatedRoute });
}

方案2:使用完整绝对路径

直接写全路由层级的绝对路径即可:

public tryToNavigate(): void {
  this._router.navigate(['/something/edit']);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:45:04