初步学习Angular9,在httpclient模块栽了半天。根据官方文档设置ur居然是无效的,比如

1
2
    let httpParams = new HttpParams().set('code', 'aaaa');//可以成功设置code  
    httpParams.set('state', 'ccccc'); // 无法设置state

看了stackoverflow的回答后才知道

HttpParams旨在是不可变的。该set和append方法不修改现有的实例。相反,它们返回新实例并应用更改。

所以这里有两种方案:

1、使用 fromString 变量从查询字符串中直接创建 HTTP 参数

1
2
3
4
5
const data = {  
      code: this.subInfo.code,  
      state: this.subInfo.state  
    };  
const httpParams = new HttpParams({fromObject: data});

 

2、直接传递对象而不是HttpParams

1
http.get(url, {params: data})

所以直接是用方法2了~

参考文章:
https://stackoverflow.com/questions/45210406/angular-4-3-httpclient-set-params