javascript - cambiar el color del marcador de posición de mat-select de Angular mediante código
Estoy usando Angular 5 y me gustaría cambiar el color del texto del marcador de posición. El contenido de texto de la lista funciona perfectamente (puedo cambiar el color), pero no así el marcador de posición. No estoy buscando una solución codificada directamente en el CSS principal de la aplicación, necesito cambiarlo dinámicamente mediante código.
<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>
Respuesta #1
Abordar este tema sería difícil solo con código. Aquí hay una solución de manera semi-programática. La clave es usar ngClass. Sin embargo, necesitarías predefinir las clases.
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
Respuesta #2
Puedes usar
:host::ng-deep .mat-select-placeholder {
color: red;
}
Ten en cuenta que este método pronto será desaprobado, por lo que puedes añadir el .mat-select-placholder a tu hoja de estilos global y también debería funcionar allí.
