当前位置: 首页 > 知识库问答 >
问题:

使用新路由器v3 Angular2清除所有查询参数

蓬化
2023-03-14

我试图弄清楚如何使用Angular2路由器导航(路由器3.0.0-alpha.7)和查询参数。

this._router.navigate(['/login'], {queryParams: {redirect: 'route1'}});

在“/login”组件中,我进行了一些登录,这将重定向到< code>redirect路由,即这里的route1。然而,在重定向之后,< code>redirect查询参数保留在URL中,即我现在位于页面< code>/route1?redirect=route1。我想删除这里的重定向参数。

此外,如果我随后使用相同的重定向查询参数导航到另一个页面,它不会覆盖前一个页面,而是在URL中添加另一个?redirect=...。即:

this._router.navigate(['/another-route'], {queryParams: {redirect:'route2'}});

引导我到<代码>/另一条路线?重定向=路由2?重定向=路由1

共有3个答案

郁隐水
2023-03-14

您可以简单地使用 preserveQueryParams: false 参数来忽略查询参数

this.router.navigate(['target'], {preserveQueryParams: false});
巫晋鹏
2023-03-14

实际上…您不应该“期望路由器清除查询参数”。

显然,你确实期望如此。但那是因为您不知道一个重要的路由器设计决策...可能是因为,不幸的是,我们还没有在文档中告诉您。我们现在正在努力纠正这一点。

QueryParams用于跨导航的全局参数;他们不会改变。

MatrixParams用于属于当前导航的参数;这些确实改变了。

什么属于全局< code>QueryParams?来自服务器的东西是候选者。就像属于每个交互的身份验证令牌。

但是必需的路由参数(customer/:id 中的 id)和可选的矩阵参数(如 /customers;name=Jo* 中的 ;name=Jo*)是一个导航的本地参数。这就是使用可选名称筛选器为客户指定导航的方式。

我建议调整你的期望,而不是与之抗争。

梁丘赞
2023-03-14

我对此也很纠结。当导航到另一条路由时,您会期望路由器默认清除查询参数...

你可以做任何一件事

this._router.navigate(['/route1'], {queryParams: {}});

this._router.navigateByUrl('/route1');
<a [routerLink]="['/applications']" [queryParams]="{}"> Applications</a>
 类似资料:
  • 英文原文:http://emberjs.com/guides/routing/query-params/ 通常情况下,URL的动态段是模型的一种序列化表示,最常见的是模型的ID。然后,有时候还需要将应用的其他状态也序列化到URL中。这可能是对从服务器端加载模型有影响的一些参数,比如要查看的是那一页结果;也可能是一些关于客户端状态的信息,比如在客户端实现排序时的记录排序规则。 当然URL中还可以被序

  • 我已将路径修改为 在此之后,如果我试图访问url,它不会将我重定向到适当的页面,而是抛出一个错误,如下所示

  • 根据这个问题的公认答案,React路由器4不再匹配查询参数。如果我从一个与我的<code>匹配的URL 例如,许多搜索引擎和其他使用搜索栏的网站,包括我正在工作的网站,都使用一个查询参数,通常是< code>q或< code>query。用户可以搜索一个东西,然后决定这不是他/她想要的,并搜索另一个东西。用户可以键入第二个URL或者再次使用搜索栏进行搜索。URL路径中实际上没有放置搜索词的位置,所

  • 将路由链接到参数 显示特定产品详细信息的组件的路由需要该产品ID的路由参数。我们可以使用以下实现: 注意:product-details路由的路径中的 ,它将参数放在路径中。例如,要查看ID为5的产品的产品详细信息页面,必须使用以下URL:localhost:3000/product-details/5 注意,指令传递一个数组,该数组指定路径和路由参数。或者,我们可以使用JS跳转: Product

  • 问题内容: 如何使用JavaScript删除当前域的所有cookie? 问题答案: 请注意,此代码有两个限制: 它不会删除设置了标志的cookie ,因为该标志会禁用Javascript对cookie的访问。 它不会删除已设置值的cookie 。(尽管这些cookie会出现在中,但您必须在未指定与它相同的值的情况下将其删除。)

  • 我似乎找不到如何更新查询参数与反应路由器不使用