У меня есть приложение Angular2 с использованием компонентов PrimeNG. Я пытаюсь сделать так, чтобы, когда поле имеет определенное значение, строка в DataTable окрашена в определенный цвет. У меня есть другое поле, которое содержит значение цвета для выделения строки, но не может решить, как заставить его работать.Angular2 PrimeNG Условный ряд Форматирование
Моя модели выглядит следующим образом (очень упрощенный):
export class RepackRequest{
AdhereToLeadTime: boolean;
LeadTimeRemaining: string;
constructor() {
var today = new Date();
if(this.AdhereToLeadTime){
var difference = today.getTime() - this.StartDate.getTime();
if(difference >= 3 && difference <= 4){
this.LeadTimeRemaining = "orange";
}
else if(difference >= 5){
this.LeadTimeRemaining = "red";
}
}
else {
this.LeadTimeRemaining = 'white';
}
}
}
Так в основном, если она приклеена к заблаговременности 5 дней, он меняет цвет в зависимости от того, насколько близко к заблаговременности это.
В моем шаблоне я тогда иметь следующее:
<p-dataTable [value]="approvalRepacks"
[rows]="10"
[paginator]="true"
[pageLinks]="5"
[rowsPerPageOptions]="[5,10,20]"
selectionMode="single"
[(selection)]="selectedRepack"
(onRowSelect)="onSelect()"
[globalFilter]="na">
<header>
<div style="text-align:center;">
<button pButton type="button" icon="fa-plus" iconPos="left" label="Create New Request" (click)="addNew()"></button>
</div>
</header>
<p-column field="DateRequested" header="Date Requested" sortable="true">
<template let-col let-rep="rowData" pTemplate type="body">
<span [style.background]="{{rep.LeadTimeRemaining}}">{{rep[col.field] | date:'dd/MM/yyyy'}}</span>
</template>
</p-column>
<p-column field="OrderNum" header="Order No" sortable="true" styleClass="wordBreak"></p-column>
<p-column field="Customer" header="Customer" sortable="true"></p-column>
<p-column field="FromItem" header="Repack From" sortable="true" styleClass="wordBreak"></p-column>
<p-column field="ToItem" header="Repack To" sortable="true" styleClass="wordBreak"></p-column>
<p-column field="FromWarehouse" header="From Whse" sortable="true"></p-column>
<p-column field="FromLocation" header="From Bin" sortable="true"></p-column>
<p-column field="ToWarehouse" header="To Whse" sortable="true"></p-column>
<p-column field="ToLocation" header="To Bin" sortable="true"></p-column>
<p-column field="Quantity" header="Qty" sortable="true"></p-column>
<p-column field="RequestedBy" header="Requested By" sortable="true" styleClass="wordBreak"></p-column>
<p-column header="Actions">
<template let-col let-rep="rowData" pTemplate type="body">
<button pButton type="button" icon="fa-check" label="Approve" (click)="approve(rep.ID)"></button>
</template>
</p-column>
</p-dataTable>
Как вы можете видеть, у меня есть [style.background]="{{rep.LeadTimeRemaining}}"
попытаться установить цвет столбца.
Я предполагаю, что это неправильный способ сделать это, поскольку он устанавливает его только для этого столбца, а идентификатор нужен одинаково для каждого столбца.
Может ли кто-нибудь помочь в этом, я не могу найти никакой информации об этом.
Большое спасибо
EDIT
Использование следующих на каждый столбец выделяет его в точку, однако это очень неприглядно, как вы можете увидеть ниже как это только красит DIV, а не тд или тр ,
<template let-col let-rep="rowData" pTemplate type="body">
<div [style.background]="rep.LeadTimeRemaining" style="margin:-50px;">
<span>{{rep[col.field]}}</span>
</div>
</template>
у вас есть какой-либо прогресс в этом? – Tito
Я смог только цвет текста не целой строки, к сожалению – DaRoGa