1. ホーム
  2. angular

[解決済み] Angular 4.3 - HttpClient set params

2022-11-30 10:07:48

質問

let httpParams = new HttpParams().set('aaa', '111');
httpParams.set('bbb', '222');

なぜこれがうまくいかないのか? aaa'を設定するだけで、'bbb'を設定しないのです。

また、オブジェクト { aaa: 111, bbb: 222 } も持っています。 ループさせずにすべての値を設定するにはどうしたらよいでしょうか?

UPDATE (これはうまくいきそうですが、どうすればループを避けられるでしょうか?)

let httpParams = new HttpParams();
Object.keys(data).forEach(function (key) {
     httpParams = httpParams.append(key, data[key]);
});

どのように解決するのですか?

5.0.0-beta.6以前

let httpParams = new HttpParams();
Object.keys(data).forEach(function (key) {
     httpParams = httpParams.append(key, data[key]);
});

5.0.0-beta.6から

5.0.0-beta.6(2017-09-03)より、新機能(HttpClientのheaders & paramsのオブジェクトマップを受け付ける)が追加されたそうです。

今後は、HttpParamsの代わりにオブジェクトを直接渡すことができます。

getCountries(data: any) {
    // We don't need any more these lines
    // let httpParams = new HttpParams();
    // Object.keys(data).forEach(function (key) {
    //     httpParams = httpParams.append(key, data[key]);
    // });

    return this.httpClient.get("/api/countries", {params: data})
}