Angular 4选择选项从页面加载自动填充,不适用于ngModel

时间:2017-05-30 23:31:31

标签: angular

我有更新/编辑功能页面,其中页面加载/填充来自数据库的现有值,以便用户可以更改和更新提交。

当我将<select>放入select标记时,除了[(ngModel)] =""下拉列表之外的所有其他控件都正常工作,但是如果我删除了ngModel,那么它会正确填充值。

但我需要绑定选定的值,因此ngModel会在失败的地方进入。以下是我的代码

普通网址 - https://plnkr.co/edit/HqCOOE4fg3nmwssOXIz3?p=preview

<select [(ngModel)]="selectedItem" name="kannelSettingsId" class="form-control">
   <option *ngFor="let item of kannelList;let index=index; trackBy:trackByIdx()" [value]="item.kannelSettingsId" [selected]="item.kannelSettingsId === bind.kannelSettings.kannelSettingsId">
      {{item.server}}
   </option>              
</select>                

2 个答案:

答案 0 :(得分:1)

@ AJT-82,是的我甚至尝试了虚拟值,但没有成功。

但它现在正在工作 - 添加#bindForm =&#34; ngForm&#34; &安培; #kannelSettingsId =&#34; ngModel&#34;

&#13;
&#13;
<form class="form-horizontal" #bindForm="ngForm">
   <select required minlength="1" #kannelSettingsId="ngModel" 
          [(ngModel)]="bind.kannelSettings.kannelSettingsId" 
                name="updateKannelSettingsId" class="form-control">
      <option *ngFor="let item of kannelList;"
         [value]="item.kannelSettingsId" 
         [selected]="item.kannelSettingsId === bind.kannelSettings.kannelSettingsId">
       
       {{item.server}}
      
      </option>              
   </select>
</form>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

发现了这个问题,供我以后参考以及需要它的人!

注意:适用于反应形式!

简单有效!

 <select class="form-control" [compareWith]="compareByOptionId"  formControlName="kannelSettingsId">
      <option *ngFor="let item of kannelList" [ngValue]="item">{{item.server}}</option>
 </select>

在组件文件上添加此方法

compareByOptionId(idFist, idSecond) {
  return idFist.id === idSecond.id;
}