Angular 5を使用していて、プレースホルダーのテキストの色を変更したいのです。リストのテキストコンテンツは完全に機能しています(色を変更できます)が、プレースホルダーではありません。私はmアプリのメインのcssを介してハードコードされたソリューションを検索しないので、コードを使用して動的に変更する必要があります。
<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>
この問題への対処は、コードだけでは難しいでしょう。これが半プログラム的な解決策です。 ngClassを使用する手がかりです。ただし、クラスを事前定義する必要があります。
[〜#〜] 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;
}
独自のCSSクラスを作成し、[ngClass]ディレクティブを介して動的に追加できます。
HTMLテンプレート
<input [ngClass]="{ 'classRed': colour==='red' , 'classGreen': colour==='green' }" placeholder="Type something here...">
あなたのCSSファイルで
.classRed::placeholder {
color: red;
}
.classGreen::placeholder {
color: green;
}
サポートするブラウザに応じて、いくつかの異なる実装が必要になることに注意してください。
.classRed::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */
color: red;
opacity: 1; /* Firefox */
}
.classGreen::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */
color: green;
opacity: 1; /* Firefox */
}
.classRed:-ms-input-placeholder { /* Internet Explorer 10-11 */
color: red;
}
.classGreen:-ms-input-placeholder { /* Internet Explorer 10-11 */
color: green;
}
.classRed::-ms-input-placeholder { /* Microsoft Edge */
color: red;
}
.classGreen::-ms-input-placeholder { /* Microsoft Edge */
color: green;
}
そして、あなたのTypeScriptファイルで
private colour = 'green';
これは単なる例ですが、実行時にプレースホルダーのテキストの色を動的に調整できます。ニーズに合わせて自由に最適化できます。 ;)
使用できます
:Host::ng-deep .mat-select-placeholder {
color: red;
}
このメソッドは間もなく廃止されるので、.mat-select-placholder
をグローバルスタイルシートに追加すると、そこでも機能するはずです。