Formcontrolにいくつかのカテゴリがあります。次のような文字列の配列で送信します。
[1,4,6]
そしてそれが私の実際のコードです:
let categoryIds = new Array<String>()
this.selectedCategories.forEach((value: string, key: string) =>
categoryIds.Push(key))
let requestOptions = {
params: new HttpParams()
.set('title', this.createNewForm.controls['title'].value)
.append('content', this.createNewForm.controls['content'].value)
.append('categoryids', categoryIds.toString()),
withCredentials: true
}
しかし、古いバージョンのangular Httpを使用して、それらをオブジェクトの配列として送信したいのですが、Httpオブジェクトのforeachを実行してすべてのカテゴリを追加することができました。しかし、方法はわかりませんすべてのカテゴリを取得し、各カテゴリをparamsに追加します。次のようにする必要があります。
... categoryId = 1&categoryId = 4&categoryId = 6 ...
.append
を使用してパラメーターに値を追加し、値の配列を処理するときに探している結果を得ることができます。 .set
は、パラメーターの値を設定または置換するために使用されます。したがって、実際には次のようなことを行う必要があります。
let httpParams = new HttpParams()
.set('title', this.createNewForm.controls['title'].value)
.set('content', this.createNewForm.controls['content'].value);
categoryIds.forEach(id => {
httpParams = httpParams.append('categoryId', id);
});
const requestOptions = {
params: httpParams,
withCredentials: true
};
明らかではありませんが、.append
メソッドは、呼び出し元のHttpParams
オブジェクトを変更せず、代わりに新しいオブジェクトを返します。上記の例でhttpParams
を再割り当てするのはこのためです。また、.append
は、最初に.set
を使用してパラメーターを設定しなくても呼び出すことができます。
すべてのパラメータを含むオブジェクトを作成し、fromObject
の作成中にこのオブジェクトをHttpParamOptons
のHttpParams
プロパティに渡すことができます
let data={
firstname:'xyz',
lastname:'pqr'
}
let body=new HttpParams({fromObject:data})
this.http.post(URL, body, this.header).subscribe(data => {
....
}, error => {
....
})
これがあなたが探しているものかもしれません
コンポーネントファイル:
import { Component } from '@angular/core';
import { HttpParams } from '@angular/common/http';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
data = [
{id:'_', title:'_', content:'_'},
....,
....
];
mainArr:any = [];
constructor(){}
getCategory(item){
this.mainArr.Push({title:item.title,content:item.content,categoryId:item.id});
console.log('mainArr',this.mainArr);
let requestOptions = {
params: new HttpParams()
.append('data', this.mainArr),
withCredentials: true
}
console.log('requestOptions',requestOptions);
}
}