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

Angular11点击菜单生成含%2F编码URL导致路由跳转失效问题

Angular 11 路由URL出现%2F编码异常解决方案

问题根源

你的路由跳转异常是由routerLink的使用方式错误导致的:
routerLink使用数组语法传参时,会将数组的每一项视为独立的路径片段,自动对片段内的/做URL编码转为%2F。
你在menu-items.ts中配置的state字段自带斜杠前缀(如/pages/namespaces),和模板中的[routerLink]="['/', menuitem.state]"组合后,Angular会将/pages/namespaces当作单一路径片段处理,把内部的/全部编码,最终生成错误的URL。

修复方案(二选一即可)

方案1:修改菜单配置的state字段

将menu-items.ts中所有state值的开头斜杠去掉:

{
  state: 'pages/dashboard1', // 移除开头的/
  name: 'MENU-ITEMS.dashboard',
  type: 'link',
  icon: 'dashboard'
},
{
  state: 'pages/namespaces', // 移除开头的/
  name: 'MENU-ITEMS.FUNCTIONALITY.projects',
  type: 'link',
  icon: 'view_in_ar'
}

方案2:修改模板的routerLink写法

不改动菜单配置的前提下,将vertical-sidebar.component.html中数组格式的routerLink改为直接传入字符串:
原代码:

[routerLink]="['/', menuitem.state]"

修改为:

[routerLink]="menuitem.state"

因为你的state本身已经是完整的绝对路径,直接传字符串不会触发路径片段的编码逻辑。

额外注意事项

你当前的pages.routing.ts中没有配置namespaces对应的路由规则,修复编码问题后需要补充该路由配置,否则访问/pages/namespaces会触发通配符路由重定向到/pages。


内容的提问来源于stack exchange,提问作者Kévin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 07:00:03