我设法得到一个选择列表来绑定我的模型以保存的目的,但是我无法解决如何使Angular2自动选择选择列表中正确的选项,如果我提供编辑功能.换句话说,如果我通过表单编辑一个预先存在的对象,我需要选择列表来反映对象的初始状态(例如选择列表中的选项5),而不是默认为第一个项目.
<select [ngModel]="originalObject"> <option *ngFor="let object of objects" [ngValue]="object">{{object.name}}</option> </select>
我想象它应该工作,但不是!
<select [ngModel]="originalObject"> <option *ngFor="let object of objects" [ngValue]="object" [selected]="object === originalObject">{{object.name}}</option> </select>
所以本质上我试图利用“选择”属性的选项,但无论什么原因,它不做任何事情.在这种情况下,’selectedObject’将是组件中可以读取的对象.
好的,所以我想出了什么问题,我认为最有用的方法.在我的情况下,因为两个对象与Javascript的角度不相同,如:它们可能具有相同的值,但它们是不同的实际对象,例如. originalObject完全独立于实质上是引用数据数组的对象(填充下拉列表).
我发现最适合我的方法是比较对象的独特属性,而不是直接比较两个对象.此比较是在已选择的绑定属性中完成的:
<select [ngModel]="originalObject"> <option *ngFor="let object of objects" [ngValue]="object" [selected]="object.uniqueId === originalObject.uniqueId">{{object.name}}</option> </select>