我正在使用模块 Ng2-smart-table ( https://akveo.github.io/ng2-smart-table/#/documentation )。
是否可以根据同一单元格/或同一行的单元格的内容自定义单元格/或整行的背景?你能举个例子吗?
谢谢
我正在使用模块 Ng2-smart-table ( https://akveo.github.io/ng2-smart-table/#/documentation )。
是否可以根据同一单元格/或同一行的单元格的内容自定义单元格/或整行的背景?你能举个例子吗?
谢谢
您可以应用带有动态变量的样式。就我而言,我需要根据燃料类型应用背景,所以我使用如下
Volume: {
type: 'html',
title: 'Volume',
valuePrepareFunction: ((Volume, row)=> {
return this.domSanitizer.bypassSecurityTrustHtml(`<h6 class="text-white p-t-0 qlz-line-height text-center" style="background:${this.getFuelColor(row.FuelType)}"><strong>${Volume} gal </strong> </h6>`);
}),
width: '15%'
}
在 getFuelColor(fuelType) 中,我根据fuelType 开发颜色。
我想到了:
import { Component, Input, OnInit } from '@angular/core';
import { ViewCell } from 'ng2-smart-table';
@Component({
template: `
<span [ngClass]="classToApply">{{renderValue}}</span>
`,
styles: ['.error { color: red; }']
})
export class MyColumnRenderComponent implements ViewCell, OnInit {
renderValue: string;
@Input() value: string | number;
@Input() rowData: any;
classToApply = '';
ngOnInit() {
if(this.value == 'MY_ERROR_CODE') {
this.classToApply = 'error';
}
this.renderValue = this.value.toString().toUpperCase();
}
}
如果您只需要根据单元格值更改类,则有valuePrepareFunction:
valuePrepareFunction: (cell) => {
if (cell === 'one') {
return '<p class="firstCellClass">' + cell + '</p>';
} else if (row.anotherCellName == 'two') {
return '<p class="secondCellClass">' + cell + '</p>';
} else {
return '<p class="defaultCellClass">' + cell + '</p>';
}
},
还有一个rowClassFunction,也适用于整行:
https://github.com/akveo/ng2-smart-table/pull/355
当您想要注入未在“html”单元格类型中呈现的特定 css 样式时,自定义渲染组件可能很有用。