Angular 5 Установить выбранное значение HTML Select Element - PullRequest
0 голосов
/ 12 мая 2018

Вот что я пытаюсь сделать:

<select name="manager" id="manager" [(ngModel)]="property.manager" class="form-control" (change)="onChangeManager($event)" required>
  <option disabled value="">Select Manager</option>
  <option *ngFor="let manager of managers" [ngValue]="manager" [selected]="manager?.name === 'Subhan Ahmed'">
    {{manager?.name}}
  </option>
</select>

Что мне нужно, когда инициализируется представление, мне нужно установить значение select, где manager?.name == property.manager.name (которое загружается из db on другого события). Я пытался разместить текст по умолчанию Subhan Ahmed, чтобы выбрать значение по умолчанию, но он не работает.

Менеджеры загружаются при запуске, я загружаю их из Firestore и назначаю их переменной managers: Observable<Manager>; во время subscribe(), в то время как property.manager загружается после события изменения другого входа.

Я что-то упустил?

1 Ответ

0 голосов
/ 12 мая 2018

Вы можете выбрать элемент из выпадающего списка, установив значение property.manager. Предполагая, что selectedName является именем элемента Manager, который вы хотите выбрать, вы можете сделать это:

// Case sensitive
this.property.manager = this.managers.find(m => m.name === this.selectedName);

// Case insensitive
let selectedNameUp = this.selectedName.toUpperCase();
this.property.manager = this.managers.find(m => m.name.toUpperCase() === selectedNameUp);
<Ч />

Вот соответствующие части разметки и кода. См. этот стек для демонстрации.

HTML:

<select name="manager" [(ngModel)]="property.manager" class="form-control" required>
  <option disabled [ngValue]="undefined">Select Manager</option>
  <option *ngFor="let manager of managers" [ngValue]="manager">{{manager.name}}</option>
</select>
<input type="text" [(ngModel)]="selectedName" (ngModelChange)="onNameChange($event)">

Код:

selectedName: string;

property = {
  ref_no: '',
  address: '',
  manager: undefined
};

managers = [
  { "company": "Test Company", "name": "John Doe", "id": "3oE37Fo2QxGHw52W7UHI" }, 
  { "company": "Another Company", "name": "John Brown", "id": "LRF8xAi48rRuWu0KZex3" }, 
  { "company": "XYZ", "name": "Subhan Ahmed", "id": "TqOQHbdwJdwgwD8Oej8v" }
];

onNameChange($event) {
  let selectedNameUp = this.selectedName.toUpperCase();
  this.property.manager = this.managers.find(m => m.name.toUpperCase() === selectedNameUp);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...