angular - 如何导航到相同的 URL,但更改(或在错过时添加)查询参数之一
问题描述
有没有一种简单的方法可以实现这一目标?
例如,我想将查询参数设置/更改qp
为值111
:
/p1/ ----> /p1/?qp=111
/p2/ ----> /p2/?qp=111
/p1/?ee=22 ----> /p1/?ee=22&qp=111
/p1/?ee=22&qp=222 ----> /p1/?ee=22&qp=111
ETC
我试图这样做,router.navigate([], { queryParams: { qp: '111' } });
但它只是用 替换所有查询参数qp=111
,如果我设置queryParamsHandling: 'preserve'
URL 根本没有改变......
解决方案
您可以与当前查询参数合并。
要获取它们,注入ActivatedRouteSnapshot
并routeSnap
访问查询参数
const oldParams = this.routeSnap.queryParams
您还可以通过注入ActivatedRoute
和访问查询参数来获取此对象this.route.snapshot.queryParams
。
在您的示例中,这将为您提供:
/p1/ ----> {}
/p2/ ----> {}
/p1/?ee=22 ----> {ee: 22}
/p1/?ee=22&qp=222 ----> {ee: 22, qp: 222}
现在您可以通过与此对象合并进行导航。
this.router.navigate([], {...oldParams, qp: 11})
推荐阅读
- google-apps-script - urlfetch 会在关闭的 Google 表格上触发吗?
- python - Dask - 打开的文件太多(套接字)
- pdf - 获取不再存在的 Google Cache for PDF 副本
- python - 我不确定如何制作一个名为变量名的列表,例如“list1”,它会在 for 循环的每次迭代中发生变化
- azure-pipelines - 如何在 Azure Pipelines YAML 中引用和设置“每次运行”变量?
- c - 如何使用 C igraph 从关联列表中创建图表?
- excel - 我正在寻找Excel VBA代码以自动在工作簿中自动复制选项卡1,当TAB 2中的表格2中填充一个名称
- reactjs - react和axios如何使用不同的IP地址进行开发和生产
- batch-file - 我正在尝试获取 Logs 文件夹中最近修改的文件的日期和时间(在变量上),但总是出现错误
- c# - net core api 控制器方法在发布配置上运行不同