2016-11-19 77 views
2

如何在選定倍數上正確構建FormBuilder? 它只能工作,沒有多個。帶選擇倍數的Angular 2 FormBuilder

我嘗試使用FormArray,HTML中的FormGroupName,但是,所有返回錯誤。我遇到的例子總是沒有標記<select multiple>

有人能指導我嗎? 謝謝。

.TS

this.detailFormGroup = this.fb.group({ 
    "id": [this.item.id], 
    "name": [this.item.name, [Validators.required]], 
    "categories": this.item.categories 
}); 

.HTML

<form [formGroup]="detailFormGroup"> 
    <div> 
     <input type="text" formControlName="name" /> 
    </div> 
    <div> 
     <select formControlName="categories" multiple> 
     <option *ngFor="let item of categories" [value]="item.id">{{ item.categoryName }}</option> 
     </select> 
    </div> 
</form> 

我需要的是,當我得到了我detailFormGroup.value接收對象:

{ 
    id: 1, 
    name: "name 1", 
    categories: [ 
     { 
      id: 5, 
      categoryName: "name 5" 
     }, 
     { 
      id: 10, 
      categoryName: "name 10" 
     } 
    ] 
} 

,當然還有,當我設置項目對象時,HTML控件也會與其項目一起被選中。

我得到錯誤是這樣的:

{ 
    id: 1, 
    name: "name 1", 
    categories: [ 5, 10 ] 
} 

回答

3

你得到選擇值的數組。在你的HTML中,我們可以看到option [value]="item.id"

只需將其更改爲option [value]="item"即可。