Search code examples
angular5angular-material-5

How to set default value of mat-select when options are retrieved?


 <mat-form-field [ngClass]="classes">
  <mat-select [placeholder]="placeholder" [(ngModel)]="selectValue" [multiple]="true" #multiSelect (change)="onChange()"
    #itemSelect="ngModel">
    <ngx-mat-select-search [formControl]="multiFilterCtrl"></ngx-mat-select-search>
    <mat-option *ngFor="let option of filteredMulti | async" [value]="option.id">
      {{option.name}}
    </mat-option>
  </mat-select>
</mat-form-field>

Angular material multiselect how to set values to multiselect dropdown comming from api?


Solution

  • if you are trying to set the selected values, you can

    // ...data coming from the api and saved to this.filteredMulti
    
    this.filteredMulti.take(1).subscribe(() => 
        // set your model
        selectValue = apiData.selectValue
    
        // setting the compareWith property to a comparison function
        // triggers initializing the selection according to the initial value
        // this needs to be done after the filteredMulti are loaded initially
        // and after the mat-option elements are available
        this.multiSelect.compareWith = (a: number, b: number) => a === b;
    });
    

    See https://github.com/bithost-gmbh/ngx-mat-select-search/blob/master/src/app/examples/02-multiple-selection-example/multiple-selection-example.component.ts for a full example