web-dev-qa-db-fra.com

Manuscrit. FormGroup FormArray - supprime un seul élément objet par valeur. Angular 2 4

this.formGroup = this.formBuilder.group({
    images: this.fb.array([])
});

J'ajoute un nouvel élément de cette manière: this.images.Push(new FormControl(new ImageCreateForm(this.imageResponse.id)));

get images(): FormArray {
    return <FormArray>this.formGroup.controls.images;
}

Mes classes:

export class ImageCreateForm {
    id: number;
    constructor(id: number) {
        this.id = id;
    }
}

export class ImageResponse {
    id: number;
    url: string;
}

Lorsque j'ai ajouté des images, mon {{ formGroup.value | json }} est:

"images": [
   {
    "id": 501
   },
   {
    "id": 502
   },
   {
    "id": 503
   }
]

Je souhaite supprimer des images (par exemple, uniquement une image avec id=502) de formGroup avant l'envoi de ma demande de formulaire POST. C'est possible? J'ai essayé d'utiliser la méthode reset, mais cela supprime tous les éléments: this.images.reset({"id":image.id});. Où image c'est un objet ImageResponse.

Résultat: {"images": [ null, null, null ]}, mais je veux:

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

FormArray class a removeAt qui prend l'index. Si vous ne connaissez pas l'index, vous pouvez utiliser une solution de contournement:

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