Angular 2 - 当默认为硬编码时,在下拉列表中设置默认值

时间:2017-01-12 20:41:10

标签: javascript angular typescript ngfor angular2-ngmodel

我有以下下拉列表。我想将所有患者设置为默认值。

    <select [(ngModel)]="searchModel.careprovider">
      <option [value]="0">All Pateints</option>
      <option *ngFor="let user of practiceUsers" [value]="user._id.$oid">
        {{user.dn}}
      </option>
    </select>

我的模型以这种方式宣布:

searchModel: any = { location: null, practice: null, name: '', careProvider: 0 };

我用这种方式设置了练习用户:

  this._practice.getUsers(this.searchModel.practice).subscribe(result => {
    this.practiceUsers = result;
    this.searchModel.careProvider = 0;
  });

无论我如何改变它,我总是只得到一个空白选项作为默认选项。我在加载后尝试将对象添加到this.practiceUsers数组,然后设置模型值。我已尝试使用和不使用引号设置模型值,以查看数字或字符串是否有所不同。我尝试的所有内容仍会导致默认为空白选项。

在Angular 1中,我会使用ng-options,但Angular 2不再可用,我找到的每个示例都显示使用ngFor下拉列表。

3 个答案:

答案 0 :(得分:3)

对象属性区分大小写,在您的对象中,属性称为careProvider,但在您的模板中,您使用的是searchModel.careprovider小写p。我认为您还必须使用NgValue指令而不是value,因为您使用的是NgModel指令。所以,这应该有效:它不起作用

<select [(ngModel)]="searchModel.careProvider">
  <option [ngValue]="0">All Pateints</option>
  <option *ngFor="let user of practiceUsers" [ngValue]="user._id.$oid">
    {{user.dn}}
  </option>
</select>

答案 1 :(得分:1)

尝试使用[selected]属性。我用这种方式解决了类似的问题:

<select>
   <option *ngFor="let option of options" value="{{option.id}}" [selected]="option === selectedOption">
      {{option.name}}
   </option>
</select>

我希望这有点帮助

答案 2 :(得分:0)

<select class="form-control" id="policeid_country_id" name="policeid_country_id" formControlName="policeid_country_id">
    <option [ngValue]="null">Select</option>
    <option [ngValue]="country.id" *ngFor="let country of countries">{{country.country}}</option>
</select>
相关问题