it-swarm.com.ru

Angular 2 - установка значения по умолчанию в раскрывающемся списке, если значение по умолчанию жестко задано

У меня есть следующий выпадающий список. Я хочу установить для всех пациентов значение по умолчанию.

    <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
Jhorra

Атрибуты объекта чувствительны к регистру, в вашем объекте атрибут называется 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>
3
Stefan Svrkota

Попробуйте использовать [выбранный] атрибут. Я решил подобную проблему следующим образом: 

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

Я надеюсь, что это немного помогает

1
Jaroslaw K.
<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>
0
Michalis