次のように、mat-table
にはかなり基本的な列があります。
<mat-table #table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="zone">
<mat-header-cell *matHeaderCellDef mat-sort-header></mat-header-cell>
<mat-cell *matCellDef="let item" [style.background-color]="'#' + item.zone.color"></mat-cell>
</ng-container>
...
</mat-table>
zone
列のセルに、行ごとに変化するいくつかの色を指定します(行全体ではなく、この特定の列のセルのみ)。
これまでに見つけたのは、行全体を着色することだけです。
zone
列のセルは、次のHTMLにレンダリングされます。
<mat-cell class="mat-cell cdk-column-zone mat-column-zone" role="gridcell" style="background-color: rgb(255, 182, 193);" _ngcontent-c8=""></mat-cell>
background-color
スタイルプロパティが正しく適用されていることがわかりますが、セルにはコンテンツがないため、セルの高さが0であることが問題です。セル内に
を挿入しようとしましたが、上下にマージンのある細いバーとして表示されます。
そして、私が欲しいのは、マージンを含むセル全体を着色することです。
mat-table
の個々のセルに色を付けるにはどうすればよいですか?
Angular Material
によって提供されるデフォルトのCSSを見ると、mat-row
要素の最小の高さが48px。
しかし、mat-cell
を見ると、最小値もデフォルトの高さも設定されていないことがわかります。これは、中央にとどまるために親要素(行)の表示/配置プロパティに依存しています。
前の画像を見ると、コードの背景色プロパティによって色付けされている領域が正確に示されています。
したがって、セル全体の背景色を変更するためのオプションの1つは、行がセルに使用するのと同じ最小の高さをセルに設定することです。これは、次のCSS宣言を使用して実行できます。
.mat-cell, .mat-header-cell {
flex: 1;
min-height: 48px;
display: flex;
align-items: center;
}
次に、背景色のプロパティを使用して色を変更します。