PrimeNG 1.0.0-beta.16のp-dataTableを使用しています
値がtrueのときに行にスタイルを追加したい。セルでこれを行う方法を考え出しましたが、行全体の背景を変更する必要があります。
<p-dataTable [hidden]="loading" [value]="timePeriods" scrollable="true" scrollHeight="400px" rowStyleClass="missingPeriod">
<p-column field="StartDate" header="Begindatum" sortable="false">
<template let-col let-timePeriod="rowData" pTemplate type="body">
<span [class.missingPeriod]="!timePeriod.IsNext">{{timePeriod.StartDate | date: 'dd-MM yyyy'}}</span>
</template>
</p-column>
<p-column field="EndDate" header="Einddatum" sortable="false">
<template let-col let-timePeriod="rowData" pTemplate type="body">
<span>{{timePeriod.EndDate | date: 'dd-MM yyyy'}}</span>
</template>
</p-column>
</p-dataTable>
<span [class.missingPeriod]="!timePeriod.IsNext">
は機能しているがrowStyleClass="missingPeriod"
は違います。
ご意見をお聞かせください。
更新された構文:
V1.0.1に更新
<p-dataTable [hidden]="loading" [rowStyleClass]="customRowClass" [value]="timePeriods" scrollable="true" scrollHeight="400px">
<p-column field="StartDate" header="Begindatum" sortable="false">
<template let-col let-timePeriod="rowData" pTemplate type="body">
<span [class.missingPeriod]="!timePeriod.IsNext">{{timePeriod.StartDate | date: 'dd-MM yyyy'}}</span>
</template>
</p-column>
<p-column field="EndDate" header="Einddatum" sortable="false">
<template let-col let-timePeriod="rowData" pTemplate type="body">
<span>{{timePeriod.EndDate | date: 'dd-MM yyyy'}}</span>
</template>
</p-column>
</p-dataTable>
そしてTypeScript:
public customRowClass(rowData, rowIndex): string {
console.log("In customRowClass");
console.log(rowData);
console.log(rowIndex);
return "";
}
customRowClass
の中には何も記録されません。私には、このメソッドは呼び出されていないようです。
rowStyleClass
は、あなたが思っているよりも少し異なる動作をします。入力として関数を受け取り、文字列(CSSクラス名)を返します。 PrimeNG DataTable docs にリストされています。
私のHTMLには次のものがあります:
<p-dataTable [rowStyleClass]="lookupRowStyleClass" ...>
コンポーネント内:
lookupRowStyleClass(rowData: User) {
return rowData.accountDisabled ? 'disabled-account-row' : '';
}
グローバルCSSファイル内:
/* TODO: this should really be in the component's CSS file, but it doesn't seem to apply to the PrimeNG data table properly there */
.disabled-account-row {
/* TODO: first try this without '!important', but you might need it */
color: silver !important;
}
それでも解決しない場合は、最新バージョンにアップグレードする必要があります。 PrimeNG 1.0.0 RC5は2016年11月にリリースされます。
のようだ scrollable="true"
がこの原因です。 scrollable
がtrue
に設定されている場合、getRowStyleClass
のバインディングを持たない別のテンプレートが使用されます。
ここでは、<tr>
は、notスクロール可能なテーブルには、getRowStyleClass
のバインディングがあります: https://github.com/ primefaces/primeng/blob/02e88b16e811a10d8842deb1f5e354bfb295d4c9/components/datatable/datatable.ts#L18
しかし <tr>
スクロール可能なテーブルにはバインディングがありません: https://github.com/primefaces/primeng/blob/02e88b16e811a10d8842deb1f5e354bfb295d4c9/components/datatable/datatable.ts#L257
this Plunkr で両方のケースを見ることができ、問題を投稿しました here 。
スクロール可能なテーブルでメソッドを使用できない理由がわからないので、監視できる here の修正を含むPRを提出しました。