Машинопись. FormGroup FormArray - удалить только один объект объекта по значению. Угловая 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 }} {{ formGroup.value | json }}:

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

Я хочу удалить изображения (например, только изображение с id=502) из formGroup до того, как я отправлю свой запрос POST формы. Является ли это возможным? Я попробовал использовать метод reset, но это удалит все элементы: this.images.reset({"id":image.id}); , Где image это объект ImageResponse.

Результат: {"images": [ null, null, null ]}, но я хочу:

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

Ответы

Ответ 1

Класс FormArray имеет removeAt который принимает индекс. Если вы не знаете индекс, вы можете сделать обходной путь:

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