Ответ 1
Класс FormArray
имеет removeAt
который принимает индекс. Если вы не знаете индекс, вы можете сделать обходной путь:
this.images.removeAt(this.images.value.findIndex(image => image.id === 502))
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
}
]
Класс FormArray
имеет removeAt
который принимает индекс. Если вы не знаете индекс, вы можете сделать обходной путь:
this.images.removeAt(this.images.value.findIndex(image => image.id === 502))