Если вы назначаете значение по умолчанию 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
. Другой экземпляр объекта даже с такими же свойствами и значениями не распознается. Проверяется только идентичность объекта.
Обновить
Добавлена поддержка Angular для 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
свойство такое же.