如何从URL中删除查询参数?例如从www.expample.com/home?id=123&pos=sd&sd=iiiwww.expample.com/home?id=123&sd=iii

编辑:

this.activatedRoute.queryParams.subscribe(c => {
  const params = Object.assign({}, c);
  delete params.dapp;
  this.router.navigate([], { relativeTo: this.activatedRoute, queryParams: params });
}).unsubscribe();

推荐答案

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个查询参数,同时保持其他查询参数不变.

Typescript相关问答推荐

如果存在一处房产,请确保存在其他房产

如果我有对象的Typescript类型,如何使用其值的类型?

角形标题大小写所有单词除外

如何推断哪个特定密钥与泛型匹配?

如何正确地对类型脚本泛型进行限制

泛型函数即使没有提供类型

React重定向参数

带switch 的函数的返回类型的类型缩小

在分配给类型的只读变量中维护const的类型

等待用户在Angular 函数中输入

在另一个类型的函数中,编译器不会推断模板文字类型

寻址对象中路径的泛型类型

如何通过TypeScrip中的函数防止映射类型中未能通过复杂推理的any值

类型';字符串|数字';不可分配给类型';未定义';.类型';字符串';不可分配给类型';未定义';

界面中数组中的混合类型导致打字错误

在抽象类属性定义中扩展泛型类型

作为函数参数的联合类型的键

为什么我的函数arg得到类型为Never?

如何创建内部和外部组件都作为props 传入的包装器组件?

如何键入对象转换器