Tapuscrit. FormGroup FormArray-supprimer un seul élément objet par valeur. Angle 2 4

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

j'ajoute un nouvel élément de cette façon: this.images.push(new FormControl(new ImageCreateForm(this.imageResponse.id)));

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

mes cours:

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

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

quand j'ai ajouté des images, puis mes {{ formGroup.value | json }} est:

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

je veux supprimer des images (par exemple seulement image avec id=502)formGroup avant quand j'envoie mon formulaire de demande de courrier. Est-il possible? J'ai essayé d'utiliser reset méthode, mais cela supprimer tous les éléments: this.images.reset({"id":image.id});. Où image c'est un ImageResponse objet.

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

"images": [
   {
    "id": 501
   },
   {
    "id": 503
   }
]
21
demandé sur user7337867 2017-10-12 13:14:30

1 réponses

FormArray la classe A removeAt qui prend l'index. Si vous ne connaissez pas l'index, vous pouvez faire une solution de contournement:

this.images.removeAt(this.images.value.findIndex(image => image.id === 502))
29
répondu AJT_82 2017-10-14 11:53:30