不同状态的文本颜色 Angular 6
Text Color for different status Angular 6
我对angular的看法是这样的:
这是我的 dashboard.component.ts:
export class DashboardComponent implements OnInit {
tablePresetColumns;
tablePresetData;
ngOnInit() {
this.tablePresetColumns = [{id: 1,content: 'Username'},{id: 2,content: 'Status'}];
this.tablePresetData = [[{id: 1,content: 'john.doe@random.com'},{id: 2,content: 'Busy'}],[{id: 1,content: 'test2@random.com'},{id: 2,content: 'overload'}]];
}
}
这就是我在 dashboard.component 上调用 table 的方式:
<div eds-tile class="xl-4" style="height: 700px">
<eds-tile-title>User on Shift</eds-tile-title>
<eds-table [columns]="tablePresetColumns" [data]="tablePresetData" [modes]="['compact', 'dashed']"></eds-table>
</div>
eds-table:
selector: 'eds-table',
template: "<table class=\"table\" [ngClass]=\"modes\">\n <thead *ngIf=\"columns\">\n <tr>\n <th *ngFor=\"let col of columns\">\n {{col.content}}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of data\">\n <td *ngFor=\"let cell of row\">\n {{cell.content}}\n </td>\n </tr>\n </tbody>\n</table>\n",
我应该怎么办,如果我想给Status一些颜色,我的意思是有状态Busy,text Color变成绿色,或者Idle变成黄色,Overload变成红色。
帮帮我,伙计们...
谢谢,
您可以在生成行时使用 ngClass 对数据进行一些条件检查,
<table class="table\" [ngClass]="modes\">
<thead *ngIf="columns\">
<tr>
<th *ngFor="let col of columns"> {{col.content}} </th>
</tr>
</thead>
<tbody>
<tr *ngFor="let row of data">
<td [ngClass]="{
'busy' : cell.content == 'Busy',
'idle' : cell.content == 'Idle'
'overload' : cell.content == 'Overload'
}" *ngFor="let cell of row"> {{cell.content}} </td>
</tr>
</tbody>
</table>
你还应该有一个 css 作为上面的,
.busy {
background-color: green;
}
.idle {
background-color: yellow;
}
.overload {
background-color: red;
}
您可以使用下面的
<td *ngFor="let cell of row"
[ngStyle]="{'color': (cell.content === 'Busy') ? 'green' : (cell.content === 'overload') ? 'red' : (cell.content === 'idle') ? 'yellow' : ''}">{{cell.content}}
</td>
条件应该在 cell.content
而不是 row.content
<table class="table" [ngClass]="modes">
<thead *ngIf="columns">
<tr>
<th *ngFor="let col of columns"> {{col.content}} </th>
</tr>
</thead>
<tbody>
<tr *ngFor="let row of data">
<td [ngClass]="cell.content.toLowerCase()" *ngFor="let cell of row"> {{cell.content}} </td>
</tr>
</tbody>
</table>
并在 css 中为每种状态定义 class。
.busy {
color: red;
/* other css property you want to add */
}
.idle {
color: red;
/* other css property you want to add */
}
.overload {
color: red;
/* other css property you want to add */
}
这里是 stackblitz,在我看来它运行良好。我附上这张截图仅供参考。
我对angular的看法是这样的:
这是我的 dashboard.component.ts:
export class DashboardComponent implements OnInit {
tablePresetColumns;
tablePresetData;
ngOnInit() {
this.tablePresetColumns = [{id: 1,content: 'Username'},{id: 2,content: 'Status'}];
this.tablePresetData = [[{id: 1,content: 'john.doe@random.com'},{id: 2,content: 'Busy'}],[{id: 1,content: 'test2@random.com'},{id: 2,content: 'overload'}]];
}
}
这就是我在 dashboard.component 上调用 table 的方式:
<div eds-tile class="xl-4" style="height: 700px">
<eds-tile-title>User on Shift</eds-tile-title>
<eds-table [columns]="tablePresetColumns" [data]="tablePresetData" [modes]="['compact', 'dashed']"></eds-table>
</div>
eds-table:
selector: 'eds-table',
template: "<table class=\"table\" [ngClass]=\"modes\">\n <thead *ngIf=\"columns\">\n <tr>\n <th *ngFor=\"let col of columns\">\n {{col.content}}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of data\">\n <td *ngFor=\"let cell of row\">\n {{cell.content}}\n </td>\n </tr>\n </tbody>\n</table>\n",
我应该怎么办,如果我想给Status一些颜色,我的意思是有状态Busy,text Color变成绿色,或者Idle变成黄色,Overload变成红色。
帮帮我,伙计们... 谢谢,
您可以在生成行时使用 ngClass 对数据进行一些条件检查,
<table class="table\" [ngClass]="modes\">
<thead *ngIf="columns\">
<tr>
<th *ngFor="let col of columns"> {{col.content}} </th>
</tr>
</thead>
<tbody>
<tr *ngFor="let row of data">
<td [ngClass]="{
'busy' : cell.content == 'Busy',
'idle' : cell.content == 'Idle'
'overload' : cell.content == 'Overload'
}" *ngFor="let cell of row"> {{cell.content}} </td>
</tr>
</tbody>
</table>
你还应该有一个 css 作为上面的,
.busy {
background-color: green;
}
.idle {
background-color: yellow;
}
.overload {
background-color: red;
}
您可以使用下面的
<td *ngFor="let cell of row"
[ngStyle]="{'color': (cell.content === 'Busy') ? 'green' : (cell.content === 'overload') ? 'red' : (cell.content === 'idle') ? 'yellow' : ''}">{{cell.content}}
</td>
条件应该在 cell.content
而不是 row.content
<table class="table" [ngClass]="modes">
<thead *ngIf="columns">
<tr>
<th *ngFor="let col of columns"> {{col.content}} </th>
</tr>
</thead>
<tbody>
<tr *ngFor="let row of data">
<td [ngClass]="cell.content.toLowerCase()" *ngFor="let cell of row"> {{cell.content}} </td>
</tr>
</tbody>
</table>
并在 css 中为每种状态定义 class。
.busy {
color: red;
/* other css property you want to add */
}
.idle {
color: red;
/* other css property you want to add */
}
.overload {
color: red;
/* other css property you want to add */
}
这里是 stackblitz,在我看来它运行良好。我附上这张截图仅供参考。