It could be done by binding a dynamic value to [disabled]
property.
Component:
export class AppComponent {
colors = [
{value: "Dark Green"},
{value: "Red"},
{value: "Dark Grey"},
{value: "Beige"},
];
fruits = [
{value: "Apple", disabled: false},
{value: "Passion fruit", disabled: true},
{value: "Dragon fruit", disabled: true},
{value: "Orange", disabled: false},
];
public ifColorDark(color: string): boolean {
return color.indexOf('Dark' || 'dark') !== -1;
}
}
Template:
<select type="number" [(ngModel)]="selectedItem">
<option [disabled]="ifColorDark(color.value)" *ngFor="let color of colors" [ngValue]="color.value">{{ color.value }}</option>
</select>
<select type="number" [(ngModel)]="selectedItem">
<option [disabled]="fruit.disabled" *ngFor="let fruit of fruits" [ngValue]="fruit.value">{{ fruit.value }}</option>
</select>
Working example: Stackblitz