Решение этой проблемы не может быть выполнено с помощью события selectionChange
, мы должны использовать onSelectionChange
событие MatOption, которое дает нам информацию о MatOptionGroup
.
Например:
<mat-select>
<mat-optgroup *ngFor="let group of categoryGroups"
[label]="group.name">
<mat-option *ngFor="let category of group.options"
[value]="category.value" (onSelectionChange)="onCategorySelection($event, group.name)">
{{category.viewValue}}
</mat-option>
</mat-optgroup>
</mat-select>
и Typescript
onCategorySelection(event: MatOptionSelectionChange, groupName: string) {
if (event.isUserInput) {
this.groupName = groupName;
}
}
Я создал для вас рабочий пример здесь .
PS: помните, что onSelectionChanged () запускается не только тогда, когда опция выбрана, но также и тогда, когда она не выбрана, поэтому, если вы используете метку с установленным флажком, где мы выбираем и отменяем выбор, onSelectionChanged () будет срабатывать оба раза (можно обработать с некоторыми проверками).