Якщо ви призначите значення за замовчуванням selectedWorkout
і використання [ngValue]
(що дозволяє використовувати об'єкти в якості значення - в іншому випадку тільки рядок підтримується) , то він повинен робити те , що ви хочете:
<select class="form-control" name="sel"
[(ngModel)]="selectedWorkout"
(ngModelChange)="updateWorkout($event)">
<option *ngFor="let workout of workouts" [ngValue]="workout">
{{workout.name}}
</option>
</select>
Переконайтесь, що значення, якому ви присвоюєте selectedWorkout
, той самий екземпляр, що і той, який використовується в workouts
. Інший екземпляр об'єкта навіть із тими ж властивостями та значеннями не буде розпізнаний. Перевіряється лише ідентичність об'єкта.
оновлення
Кутова додана підтримка compareWith
, що полегшує встановлення значення за замовчуванням при [ngValue]
використанні (для об'єктних значень)
З документів https://angular.io/api/forms/SelectControlValueAccessor
<select [compareWith]="compareFn" [(ngModel)]="selectedCountries">
<option *ngFor="let country of countries" [ngValue]="country">
{{country.name}}
</option>
</select>
compareFn(c1: Country, c2: Country): boolean {
return c1 && c2 ? c1.id === c2.id : c1 === c2;
}
Таким чином, інший (новий) екземпляр об'єкта може бути встановлений як значення за замовчуванням і compareFn
використовується для з'ясування, чи слід їх вважати рівними (наприклад, якщо id
властивість однакова.