我有一個選擇列表,我想要初始化從服務器返回的保存值。但無論我嘗試什麼,我都無法讓它使用選定的值。如何設置角度2無功選擇的初始值
我正在使用Angular 2.2.0和活性形式。
以下是選擇列表的值列表。
private categoryList: ICategory[] = [
new Category({ id: 1, name: 'Cat 1' }),
new Category({ id: 2, name: 'Cat 2' }),
new Category({ id: 3, name: 'cat 3' })
];
保存的值是:
{ id: 1, name: 'Cat 1' }
使用FormBuilder我創建的形式
this.itemForm = this.fb.group({
name: [null, Validators.required],
description: [null, Validators.required],
weight: [null, Validators.required],
dimensions: [null, Validators.required],
category: [null, Validators.required]
});
然後我和保存的數據初始化它
(<FormGroup>this.itemForm)
.setValue({
name: item.name,
description: item.description,
weight: item.weight,
dimensions: item.dimensions,
category: item.category
}, { onlySelf: true });
模板看起來像這樣
<select name="category" [formControl]="itemForm.controls['category']">
<option [selected]="itemForm.controls['category'].value == null" value="">-- Select --</option>
<option *ngFor="let cat of categories" [ngValue]="cat">
{{cat.name}}
</option>
</select>
{{itemForm.controls['category'].value | json }}
預期結果 項目之一的名稱在選擇選擇和匹配模板下的JSON文本顯示
實際行爲 JSON顯示:
{ "id": 1, "name": "Cat 1" }
但沒有什麼是在選擇
選擇 - 請選擇 - 如果正確選擇JSON更新爲「」。
如果選擇了另一隻貓,JSON也會正確更新。
我在做什麼錯,如何初始化select?
EDIT 我也嘗試這樣的:
<option *ngFor="let cat of categories" [selected]="itemForm.controls['category'].value.id == cat.id" [ngValue]="cat">
不知道你是否真的會得到我的答案的通知,因爲我刪除它並將其刪除。如果沒有,那麼請看下面的答案,希望對你有幫助! :) – Alex