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

如何将查询参数对象传入Angular的router.navigate方法?

Angular路由导航传递查询参数的正确方式

你用routerLink传递查询参数的写法是正确的:

<a [routerLink]="['/editinventoryitem',item.id]" [queryParams]="this.viewState">Edit</a> |

但调用router.navigate时,错误地把viewState直接放到了路由路径数组里,这会生成矩阵参数(用分号分隔),而非标准的查询参数(用问号和&分隔)。正确写法是把queryParams作为navigate方法的第二个配置参数传入:

this.router.navigate(
  ['/inventoryitemdetails', this.editInventoryItemDetails.inventoryItem.id],
  { queryParams: this.viewState }
);

这样生成的URL就会和routerLink的效果一致,用?和&分隔查询参数,示例如下:
http://localhost:4200/index.html#/inventoryitemdetails/272049?searchTerm=&searchType=ManufacturerPN&deletedMode=InStock&viewMode=Compact&sortBy=ManufacturerPN&sortDir=ASC&pageIndex=1&resultsPerPage=25&warehouseID=0

无需手动解析替换分号,也不用模拟DOM点击这种不优雅的实现方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:41:59