2017-10-12 41 views
7
this.formGroup = this.formBuilder.group({ 
    images: this.fb.array([]) 
}); 

dodać nowy element w ten sposób: this.images.push(new FormControl(new ImageCreateForm(this.imageResponse.id)));TypeScript. FormGroup FormArray - usuwa tylko jeden obiekt elementu według wartości. Kątowa 2 4

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

moich klas:

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

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

Kiedy dodane obrazy, wtedy mój {{ formGroup.value | json }} jest:

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

Chcę usunąć obrazy (na przykład tylko obraz z id=502) z formGroup przed wysłaniem formularza żądania POST formularza. Czy to możliwe? Próbowałem użyć metody reset, ale to usunie wszystkie elementy: this.images.reset({"id":image.id});. Gdzie image jest obiektem ImageResponse.

Wynik: {"images": [ null, null, null ]}, ale chcę:

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

Odpowiedz

7

FormArray klasa ma removeAt który zaczyna indeks. Jeśli nie znasz indeksu, możesz wykonać obejście:

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