Что-то вроде этого должно делать то, что вам нужно.
https://stackblitz.com/edit/angular-showmo-nftpk7?embed=1&file=app/select-overview-example.html
Добавить отключенный логический параметр в интерфейс
export interface Food {
value: string;
viewValue: string;
disabled: boolean;
}
определить массив продуктов по умолчанию
foods: Food[] = [
{ value: 'steak-0', viewValue: 'Steak', disabled: false },
{ value: 'pizza-1', viewValue: 'Pizza', disabled: false },
{ value: 'tacos-2', viewValue: 'Tacos', disabled: false },
{ value: 'showSpecials', viewValue: 'Show Specials', disabled: true },
];
addSpecials(food)
метод для добавления новых значений, если food.value == 'showSpecials'
.
addSpecials(food) {
if (food.value == 'showSpecials') {
this.foods.push(
{ value: 'pizza-special-1', viewValue: 'PizzaSpecial', disabled: false },
{ value: 'tacos-2-special-2', viewValue: 'TacosSpecials', disabled: false }
)
}
}
html для отключения опции спецпрограмм и вызова addSpecials()
при вводе мышью.
<h4>Basic mat-select</h4>
<mat-form-field>
<mat-select placeholder="Favorite food">
<mat-option *ngFor="let food of foods" [value]="food.value" [disabled]="food.disabled" (mouseenter)="addSpecials(food)">
{{food.viewValue}}
</mat-option>
</mat-select>
</mat-form-field>