UPDATE:@epelc下面的答案是最新和正确的方法:https://stackoverflow.com/a/52193044/5932590.
不幸的是,目前没有明确的方法来做到这一点:https://github.com/angular/angular/issues/18011.然而,正如jasonaden在帖子中所说,
这可以通过合并旧的和新的查询参数,删除不需要的密钥来手动完成.
以下是一种方法:
假设您的查询参数存储在某些属性中.
class MyComponent() {
id: string;
pos: string;
sd: string;
constructor(private route: ActivatedRoute, private router: Router) {}
ngOnInit() {
this.route.url.subscribe(next => {
const paramMap = next.queryParamMap;
this.id = paramMap.get('id');
this.pos = paramMap.get('pos');
this.sd = paramMap.get('sd');
});
}
}
清除pos
参数的方法如下所示:
clearPosParam() {
this.router.navigate(
['.'],
{ relativeTo: this.route, queryParams: { id: this.id, sd: this.sd } }
);
}
这将有效地导航到当前路由并清除pos
个查询参数,同时保持其他查询参数不变.