Используйте compareWith
, чтобы выбрать значение по умолчанию, сравнивая имя внутри функции сравнения. Также обратите внимание, что я изменил привязку value
к [(value)] ="animal"
. И убрал selectedValue
. Вы выбираете значение по умолчанию, назначая его в formControl
, смотрите ниже изменения в компоненте.
<form [formGroup]="myGroup">
<mat-form-field>
<mat-select placeholder="Favorite animal" [compareWith]="compareThem" formControlName="animalControl" required >
<mat-option>--</mat-option>
<mat-option *ngFor="let animal of animals" [(value)] ="animal" >
{{animal.name}}
</mat-option>
</mat-select>
</mat-form-field>
</form>
В вашем компоненте добавьте:
export class AppComponent {
animals = [
{name: 'Dog', sound: 'Woof!'},
{name: 'Cat', sound: 'Meow!'},
{name: 'Cow', sound: 'Moo!'},
{name: 'Fox', sound: 'Wa-pa-pa-pa-pa-pa-pow!'},
];
myGroup = new FormGroup({
animalControl: new FormControl(this.animals[1], [Validators.required]) //I'm assigining Cat by using this.animals[1], you can put any value you like as default.
});
compareThem(o1, o2): boolean{
console.log('compare with');
return o1.name === o2.name;
}
}