Md-sort-headerがmd-tableのmd-header-cellに追加された場合、それは常に左揃えです。 「名前」などのヘッダーセルを中央揃えにする方法は?
<md-header-cell *cdkHeaderCellDef md-sort-header style="text-align:center">
Name
</md-header-cell>
Angular Material 5.x.xの更新、ng-deepは不要:
mat-header-cell {
display:flex;
justify-content:flex-end;
}
md-header-cell
は、class = "mat-sort-header-container"でコンテナーに「変換」されます。それを使用して、スタイルを ng-deep
で設定します。 flexboxを使用して、コンテンツを中央揃えにします。コンポーネントのスタイルシートに次を入力します。
::ng-deep .mat-sort-header-container {
display:flex;
justify-content:center;
}
受け入れられた答えは正しいです。ただし、::ng-deep
は減価償却され、将来的には廃止される可能性があります( 公式ドキュメント )。
シャドウピアスの子孫コンビネータは廃止され、主要なブラウザとツールからサポートが削除されます。そのため、Angular(/ deep /、>>>、および:: ng-deepの3つすべて)のサポートを削除する予定です。それまでは、ツールとの幅広い互換性のために:: ng-deepを優先する必要があります。
適切な方法は ViewEncapsulation を使用することです。 component.tsで、次を追加します。
import { ViewEncapsulation } from '@angular/core';
@Component({
....
encapsulation: ViewEncapsulation.None
})
component.cssファイルのクラスをオーバーライドします。
.mat-sort-header-container {
display:flex;
justify-content:center;
}
.mat-header-cell { text-align: center; }
すべてのヘッダーセルを中央揃えにしたくない場合は、2つのクラスを組み合わせることができます。
.mat-header-cell.text-center { text-align: center; }
次に、htmlで:
<th mat-header-cell *matHeaderCellDef class="text-center">Actions</th>
問題に対する特定の解決策はアプローチが厳しすぎると思いますが、mat-sort-header-container
のcssプロパティを動的に変更する必要がある同様の問題がありました。
私はベガの答えのようなことをしましたが、スタイルの取り方が微妙に異なります:
::ng-deep .mat-sort-header-container{
justify-content: inherit;
/* other inheritable properties */
}
mat-header-cell
および親から継承しているmat-header-cell
で提供するスタイルはすべてhtmlコード内のng-deep
スタイルに親のいくつかのプロパティを開きます。それ以外はその階層を下って行くことはありません。