动态设置 HttpParams() 主体

Chi*_*hil 3 typescript angular-httpclient angular6

在 Angular 5 HttpClient 中,我可以通过这种方式设置 HttpParams()。

const body = new HttpParams()
    .set('email', 'test@mail.com')
    .set('password', 'pass');
Run Code Online (Sandbox Code Playgroud)

但是当我尝试以这种方式设置 HttpParams() 时。未设置值。

const paramsMap = new Map<any, any>();
paramsMap.set("email", "test@mail.com");
paramsMap.set("password", "pass");

paramsMap.forEach((value: any, key: any) => {
    body.set(key, value);
});
Run Code Online (Sandbox Code Playgroud)

为什么它没有设置?我怎样才能以类似的方式做到这一点?

For*_*man 6

HttpParams 是不可变的,因此每次使用 set() 方法时它都会返回一个新实例。您可以通过更新参考来解决此问题:

const params = {
  test: 'true'
}

let httpParams = new HttpParams();

Object.keys(params).forEach(k => {
  httpParams = httpParams.set(k, params[k]);
});

console.log(httpParams.get('test'));
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

3502 次

最近记录:

4 年,9 月 前