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

Ben bu şekilde yeni bir unsur ekleyin: this.images.push(new FormControl(new ImageCreateForm(this.imageResponse.id)));TypeScript. FormGroup FormArray - değere göre yalnızca bir öğe nesnesini kaldırın. Eğik 2 4

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

Benim sınıfları:

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

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

Ben görüntüleri eklendi, sonra benim {{ formGroup.value | json }} geçerli:

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

Resimleri kaldırmak istiyorum form POST isteğimi gönderdiğimde (id=502 ile yalnızca görüntü) formGroup'dan. Mümkün mü? reset yöntemini kullanmayı denedim, ancak bu tüm öğeleri kaldır: this.images.reset({"id":image.id});. Burada image bir ImageResponse nesnesidir.

Sonuç: {"images": [ null, null, null ]} ama istiyorum:

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

cevap

7

FormArray sınıf indeksi alır removeAt sahiptir. Dizini bilmiyorsanız, bir geçici çözüm yapabilirsiniz:

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