Как вызвать функцию при выборе опции в angular material dropbox?

#javascript #html #angular #select #angular-material

#javascript #HTML #angular #выберите #angular-материал

Вопрос:

Когда я использую angular material mat-select, я хочу вызвать функцию, чтобы консоль регистрировала имя выбранного элемента. Но почему консоль регистрирует текущую и предыдущую? Это мой код:

 <mat-form-field appearance="fill" style="margin-top: 1rem; width: 100px;">
    <mat-label>Groups</mat-label>
         <mat-select>
              <mat-option *ngFor="let name of groupNames" [value]="name 
                 (onSelectionChange)="getActivitiesInGroup(name)">
                    {{ name }}
              </mat-option>
         </mat-select>
</mat-form-field> 
  
 groupNames = ['A','D','T','C']
getActivitiesInGroup(name: string): void {
        console.log(name);
}
  

Итак, я сначала выбираю ‘A’ и соболезную журналу ‘A’, после этого я выбираю ‘T’, почему консоль сначала регистрирует ‘T’, а затем регистрирует ‘A’? Как я могу позволить консоли просто регистрировать ‘T’ во время второго выбора?

Ответ №1:

Какую версию Angular вы используете?

Angular 6 :

Вы должны использовать selectionChange событие на mat-select , а не mat-option :

 <mat-select name="countryString" [(value)]="selectedCountry" (selectionChange)="onSelectionChange(selectedCountry)"
  placeholder="Country">
  <mat-option [value]="'GB'">Great Britain</mat-option>
  <mat-option [value]="'US'">United States</mat-option>
  <mat-option [value]="'CA'">Canada</mat-option>
</mat-select>
  

Демонстрация на stackblitz:

https://stackblitz.com/edit/angular-mat-select-example-vqnv8h?file=src/app/app.component.html