您可以使用新的查询参数导航到当前路线,这不会重新加载您的页面,但会更新查询参数。
类似于(在组件中):
constructor(private router: Router) { }
public myMethodChangingQueryParams() {
const queryParams: Params = { myParam: 'myNewValue' };
this.router.navigate(
[],
{
relativeTo: activatedRoute,
queryParams: queryParams,
queryParamsHandling: 'merge', // remove to replace all query params by provided
});
}
请注意,虽然它不会重新加载页面,但它会将新条目推送到浏览器的历史记录中。如果您想在历史记录中替换它而不是在那里添加新值,您可以使用{ queryParams: queryParams, replaceUrl: true }
.
编辑:正如评论中已经指出的那样,[]
并且relativeTo
在我的原始示例中缺少该属性,因此它也可能更改了路线,而不仅仅是查询参数。在这种情况下,正确的this.router.navigate
用法是:
this.router.navigate(
[],
{
relativeTo: this.activatedRoute,
queryParams: { myParam: 'myNewValue' },
queryParamsHandling: 'merge'
});
将新参数值设置为null
将从 URL 中删除参数。