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

我以這種方式添加新的元素: this.images.push(new FormControl(new ImageCreateForm(this.imageResponse.id)));TypeScript。 FormGroup FormArray - 按值刪除一個元素對象。角2 4

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 }}是:

"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 
    } 
] 

回答

7

FormArray類有removeAt這需要索引。如果您不知道索引,則可以採取以下解決方法:

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