在做个人信息修改的时候遇到了一个问题:部分下拉框的option内容是由后端通过json传递过来的,格式大概为:
{
"arriveTime":
{
"id":150,
"name":"待定",
"sort":1
},
{
"id":151,
"name":"立即",
"sort":2,
"selected":true
}
}
于是我把该实体通过循环填充:
<div class="area-int">
<select formControlName="arriveTime">
<option *ngFor="let a of resume.arriveTimeDic" [selected]="a.selected" [ngValue]="a">
{{a.name}}
</option>
</select>
</div>
结果发现只要有ngValue或是value属性存在,selected就会失效。使用ngValue的意图是,因为后端需要我同时把id和name两个字段都传过去。我使用另一种方式也同样没有效果:
<div class="area-int">
<select formControlName="arriveTime">
<option *ngFor="let a of resume.arriveTimeDic" [selected]="a.selected" [value]="a.name">
{{a.name}}
<input formControlName="arriveTimeId" [value]="a.id">
</option>
</select>
</div>
搜索未果,特向大神们请教,小白自学,感激不尽!
遇到这种下拉框,复选框还有单选框的表单大部分情况都需要对数据格式进行一下转换,下面是我的作法希望能提高你一点思路。
第一步,将获取到的数据进行格式转换,并加装到页面上;
js代码
html代码
第二步,提交数据的时候对格式进行转换,转换成满足后台要求的格式。
submit方法中两次console.log的结果如下:
