【问题标题】:Angular 6 dynamically apply CSS class to mat-cellAngular 6 动态地将 CSS 类应用于 mat-cell
【发布时间】:2019-02-11 17:35:53
【问题描述】:

我有材料表,根据单元格的内容,我需要使用特定的 CSS 类。

我使用以下 css 类

.status-code{
    flex: 0 0 10% !important;
    width: 10% !important;
}

.status-code-succsess{
    flex: 0 0 10% !important;
    width: 10% !important;
    background: rgb(196,214,160);
    color: rgb(80,99,42);
}

.status-code-failed{
    flex: 0 0 10% !important;
    width: 10% !important;
    background: rgb(229,185,181);
    color: rgb(97,38,33);
}

.status-code-empty{
    flex: 0 0 10% !important;
    width: 10% !important;
    background: rgb(216,216,216);
}

这是html

<ng-container matColumnDef="Warehouse">
                <mat-header-cell class="status-code" *matHeaderCellDef> Warehouse </mat-header-cell>
                <mat-cell class="{{row.warehouse}} == 'Success' ? status-code-success : ({{row.warehouse}} == 'Failed' ? status-code-failed : status-code-empty)" *matCellDef="let row"> {{row.warehouse}} </mat-cell>
            </ng-container>

            <ng-container matColumnDef="DPI">
                <mat-header-cell class="status-code" *matHeaderCellDef> DPI </mat-header-cell>
                <mat-cell class="{{row.dpi}} == 'Success' ? status-code-success : ({{row.dpi}} == 'Failed' ? status-code-failed : status-code-empty)" *matCellDef="let row"> {{row.dpi}} </mat-cell>
            </ng-container>

但是,我在仓库单元格中只有一行带有“成功”的数据,但它给了我粉红色背景的风格

请帮忙,有什么问题?

【问题讨论】:

  • 尝试使用 [ngClass] 而不是 class,也不需要括号“{}”来编写 row.warehouse。你可以把它写成
  • 谢谢,但是当我使用这个 {{row.warehouse}} 根本没有应用样式((

标签: css angular angular-material material-design


【解决方案1】:

使用[ngClass] 试试这个。

您在使用ngClass 时可能需要进行以下更改:

*。针对每个变量删除插值{}
*。在single quotes 中包含所有class names

<ng-container matColumnDef="Warehouse">
    <mat-header-cell class="status-code" *matHeaderCellDef> Warehouse </mat-header-cell>
    <mat-cell [ngClass]="row.warehouse == 'Success' ? 'status-code-success' : (row.warehouse == 'Failed' ? 'status-code-failed' : 'status-code-empty')"
         *matCellDef="let row"> {{row.warehouse}} </mat-cell>
</ng-container>

<ng-container matColumnDef="DPI">
    <mat-header-cell class="status-code" *matHeaderCellDef> DPI </mat-header-cell>
    <mat-cell [ngClass]="row.dpi == 'Success' ? 'status-code-success' : (row.dpi == 'Failed' ? 'status-code-failed' : 'status-code-empty')"
         *matCellDef="let row"> {{row.dpi}} </mat-cell>
</ng-container>

你的班级名称也有错别字。

.status-code-succsess 更改为.status-code-success

.status-code-success{
    flex: 0 0 10% !important;
    width: 10% !important;
    background: rgb(196,214,160);
    color: rgb(80,99,42);
}

【讨论】:

  • 是的,谢谢,确实有错字。但是什么都没有改变..它仍然无法正常工作。粉红色的背景无处不在
  • 尝试使用ngClass。删除插值并将所有class names 包含在single quotes 中。检查更新的答案
  • 是的,使用 [ngClass] 可以完美运行!非常感谢
  • 顺便说一句,也许您知道如何使这种状态具有略微圆角并具有第一张图片上的边距?将样式更改为 .status-code-success{ flex: 0 0 10% !important;宽度:10%!重要;背景:RGB(196,214,160);颜色:RGB(80,99,42);边距:5px 5px 5px 5px; } 将此边距赋予其他不可接受的单元格
  • 尝试类似border-radius: 20px的东西
猜你喜欢
  • 2019-07-20
  • 2020-02-15
  • 2019-03-22
  • 2019-10-26
  • 2022-01-15
  • 2021-06-10
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
相关资源
最近更新 更多