Angular 2仅选择最后一个选项作为预选的FormGroup

标签 angular select angular2-forms

我正在使用 Angular 2 FormGroups 来管理我的用户输入。如果我想从旧数据中更新选择字段,则选择字段不会按预期填充。仅当选择列表中的最后一项时它们才起作用。然后表单会适本地显示 FormGroup 中的该项目。

这是选择的代码

<select formControlName="homeTeam">
        <option>-- Choose a team --</option>                                
        <option 
           *ngFor="let homeTeam of _teamsService.teamsForSchedule"
           [ngValue]="homeTeam" 
           [selected]="homeTeam.$key===gameForm.value['homeTeam'].$key">  
                    {{homeTeam.name}}
       </option>
</select>
<label>Away Team</label>
<select formControlName="awayTeam">
       <option >-- Choose a team --</option>                
       <option 
          *ngFor="let awayTeam of _teamsService.teamsForSchedule" 
          [ngValue]="awayTeam"
          [selected]="awayTeam.$key===gameForm.value['awayTeam'].$key">  
                    {{awayTeam.name}}
       </option>
</select>

[selected] 标签声明默认选择哪个项目。正如我所说,只有当最后一个项目是默认选择的项目时,它才有效。

这是我所看到的屏幕截图 enter image description here

这是我检查时看到的 HTML。正如您所看到的,所选内容出现在第二个选项标签上,但由于某种原因,它没有显示。

主队(正确显示)

<select formcontrolname="homeTeam" ng-reflect-name="homeTeam" class="ng-untouched ng-pristine ng-valid">
                <option>-- Choose a team --</option>                                
                <!--template bindings={
  "ng-reflect-ng-for-of": "[object Object],[object Object],[object Object]"
}--><option value="1: Object" ng-reflect-ng-value="[object Object]">  
                    Limozeen
                </option><option value="2: Object" ng-reflect-ng-value="[object Object]">  
                    Smash Bros
                </option><option value="3: Object" ng-reflect-ng-value="[object Object]" ng-reflect-selected="true">  
                    Thunder Thighs
                </option>
</select>

客队(显示不正确)

<select formcontrolname="awayTeam" ng-reflect-name="awayTeam" class="ng-pristine ng-valid ng-touched">
                    <option>-- Choose a team --</option>                
                    <!--template bindings={
      "ng-reflect-ng-for-of": "[object Object],[object Object],[object Object]"
    }--><option value="1: Object" ng-reflect-ng-value="[object Object]">  
                        Limozeen
                    </option><option value="2: Object" ng-reflect-ng-value="[object Object]" ng-reflect-selected="true">  
                        Smash Bros
                    </option><option value="3: Object" ng-reflect-ng-value="[object Object]">  
                        Thunder Thighs
                    </option>
</select>

最佳答案

您已将绑定(bind)到某个表达式的 selected 属性放入通过 ngFor 指令填充的每个选项。最后选择的选项被选中,因为您只能从选择框中选择一个选项。

如果您绑定(bind) value 属性,那么如果该值与 ngModel 表达式的值匹配,则会选择该属性。

关于Angular 2仅选择最后一个选项作为预选的FormGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42237616/

相关文章:

php - 在html中显示sql中的值选择选项不显示值

C++ select() 减少文件描述符计数

angular - 如何绑定(bind)到 angular2 中投影内容中的属性?

angular - 如何从 Angular2 FormControl 对象获取输入字段的名称?

javascript - Angular 2 *ngFor - 条件包装元素。就像使用里面有三列的引导行一样,然后添加一个新行

Angular 4拦截器不设置标题

javascript - 如何使用 OpenLayers 创建圆形图标图像?

javascript - Angular2,(更改)事件不会触发

javascript - 如何连接按钮并在 Vue JS 中使用其选项进行选择

Angular - FormArray 中的唯一性验证器