this.formGroup = this.formBuilder.group({
images: this.fb.array([])
});
この方法で新しい要素を追加します:this.images.Push(new FormControl(new ImageCreateForm(this.imageResponse.id)));
get images(): FormArray {
return <FormArray>this.formGroup.controls.images;
}
私のクラス:
export class ImageCreateForm {
id: number;
constructor(id: number) {
this.id = id;
}
}
export class ImageResponse {
id: number;
url: string;
}
画像を追加すると、{{ formGroup.value | json }}
は次のようになります。
"images": [
{
"id": 501
},
{
"id": 502
},
{
"id": 503
}
]
フォームPOSTリクエストを送信する前に、formGroup
から画像(たとえば、id=502
の画像のみ)を削除したい。出来ますか? reset
メソッドを使用しようとしましたが、これによりすべての要素が削除されます:this.images.reset({"id":image.id});
。ここで、image
はImageResponse
オブジェクトです。
結果:{"images": [ null, null, null ]}
、しかし私は欲しい:
"images": [
{
"id": 501
},
{
"id": 503
}
]
FormArray
クラスには、インデックスを取得する removeAt
があります。インデックスがわからない場合は、回避策を実行できます。
this.images.removeAt(this.images.value.findIndex(image => image.id === 502))