web-dev-qa-db-ja.com

TypeScript。 FormGroup FormArray-値によって1つの要素オブジェクトのみを削除します。 Angular 2 4

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});。ここで、imageImageResponseオブジェクトです。

結果:{"images": [ null, null, null ]}、しかし私は欲しい:

"images": [
   {
    "id": 501
   },
   {
    "id": 503
   }
]
42
user7337867

FormArrayクラスには、インデックスを取得する removeAt があります。インデックスがわからない場合は、回避策を実行できます。

this.images.removeAt(this.images.value.findIndex(image => image.id === 502))
75
AJT_82