【发布时间】:2017-04-20 03:56:12
【问题描述】:
我在 SO 和其他地方研究了许多类似的现有答案,但找不到解决方案。
我正在使用 Angular 2 中的模型驱动方法来构建我的表单,它既是添加表单又是编辑表单。在编辑模式下,这些值由从服务中检索到的数据填充:这方面很好,因为简单的文本输入都正确绑定。
其中一个属性是“Country”,这是一个对象,如下所示:
export class Country {id: number; name: string;}
我想将此绑定到一个选择控件,该控件将具有可用的国家列表,以及在表单加载时填充的模型中的一个。我希望绑定的值是国家对象,而不仅仅是 id。
这里是选择控件的html:
<select class="form-control" id="country" formControlName="country">
<option value="default">--Select a country--</option>
<option *ngFor="let c of countries" [value]="c">{{c.name}} </option>
</select>
这是我尝试从组件类中填充值的地方:
(<FormControl>this.personForm.controls['country'])
.setValue(this.person.country, { onlySelf: true });
但是当页面加载时没有选择选项,即使控制台确认 this.person.country 存在并且填充了正确的对象。
我可以让它与 ids 一起工作:在视图中更改为 [value]="c.id" 并在类中附加 .id,然后它在选择正确的选项时起作用。问题是 select 不再为 country 属性发出一个对象,而只是 id。我尝试将 [value] 更改为 [ngValue] 并得到相同的结果。我什至将 [ngModel]="country" 添加到 select 元素中,但这也无济于事。
如果有任何帮助,我将不胜感激。
【问题讨论】: