Set default option in mat-select Set default option in mat-select angular angular

Set default option in mat-select


Working StackBlitz

No need to use ngModel or Forms

In your html:

 <mat-form-field>  <mat-select [(value)]="selected" placeholder="Mode">    <mat-option value="domain">Domain</mat-option>    <mat-option value="exact">Exact</mat-option>  </mat-select></mat-form-field>

and in your component just set your public property selected to the default:

selected = 'domain';


Try this

<mat-form-field>    <mat-select [(ngModel)]="modeselect" [placeholder]="modeselect">        <mat-option value="domain">Domain</mat-option>        <mat-option value="exact">Exact</mat-option>    </mat-select></mat-form-field>

Component:

export class SelectValueBindingExample {    public modeselect = 'Domain';}

Live demo

Also, don't forget to import FormsModule in your app.module


This issue vexed me for some time. I was using reactive forms and I fixed it using this method. PS. Using Angular 9 and Material 9.

In the "ngOnInit" lifecycle hook

1) Get the object you want to set as the default from your array or object literal

const countryDefault = this.countries.find(c => c.number === '826');

Here I am grabbing the United Kingdom object from my countries array.

2) Then set the formsbuilder object (the mat-select) with the default value.

this.addressForm.get('country').setValue(countryDefault.name);

3) Lastly...set the bound value property. In my case I want the name value.

<mat-select formControlName="country">   <mat-option *ngFor="let country of countries" [value]="country.name" >          {{country.name}}  </mat-option></mat-select>

Works like a charm. I hope it helps