Se você atribuir o valor padrão a selectedWorkout
e usar [ngValue]
(que permite usar objetos como valor - caso contrário, apenas string é suportado), então ele deve apenas fazer o que você deseja:
<select class="form-control" name="sel"
[(ngModel)]="selectedWorkout"
(ngModelChange)="updateWorkout($event)">
<option *ngFor="let workout of workouts" [ngValue]="workout">
{{workout.name}}
</option>
</select>
Certifique-se de que o valor que você atribui selectedWorkout
seja a mesma instância que o usado em workouts
. Outra instância de objeto, mesmo com as mesmas propriedades e valores, não será reconhecida. Apenas a identidade do objeto é verificada.
atualizar
Suporte angular adicionado para compareWith
, que torna mais fácil definir o valor padrão quando [ngValue]
é usado (para valores de objeto)
Dos documentos 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;
}
Desta forma, uma instância de objeto diferente (nova) pode ser definida como valor padrão e compareFn
é usada para descobrir se eles devem ser considerados iguais (por exemplo, se a id
propriedade é a mesma.