javascript - Änderung der Platzhalterfarbe von Angular mat-select über Code
Ich benutze Angular 5 und möchte die Platzhaltertextfarbe ändern. Der Textinhalt der Liste funktioniert einwandfrei (ich kann die Farbe ändern), aber nicht der Platzhalter. Ich suche keine fest codierte Lösung über das Haupt-CSS der App, ich muss es dynamisch über Code ändern.
<mat-form-field>
<mat-select placeholder="{{'TXTKEY' | translate }}" [style.color]="config.textColor">
<mat-option *ngFor="let item of items" [value]="item.identifier" (click)="OnChange(item)">
<div [style.color]="config.textColor"> {{item.name}}</div>
</mat-option>
</mat-select>
</mat-form-field>
Antwort #1
Dieses Thema nur mit Code anzugehen, wäre schwer. Hier ist eine Lösung auf halb-programmatische Weise. Der Hinweis besteht darin, ngClass zu verwenden. Sie müssten jedoch die Klassen vorher definieren.
HTML
<mat-form-field>
<mat-select [ngClass]="className" placeholder="{{someText}}">
<mat-option *ngFor="let item of items" [value]="item.value">
{{ item.viewValue }}
</mat-option>
</mat-select>
</mat-form-field>
Typescript:
someText = "Enter your choice";
someCondition = true;
get className() {
return this.someCondition ? 'class1' : 'class2';
}
CSS:
.class1 .mat-select-placeholder {
color:red !important;
}
.class2 .mat-select-placeholder {
color:blue !important;
}
DEMO
Antwort #2
Du kannst verwenden
:host::ng-deep .mat-select-placeholder {
color: red;
}
Beachten Sie, dass diese Methode bald veraltet sein wird, daher können Sie das .mat-select-placholder zu Ihrem globalen Stylesheet hinzufügen und es sollte dort ebenfalls funktionieren.
