您可能正面临有关视图封装的问题。
ngx-datatable 在其样式上使用ViewEncapsulation.None。您可以将.my-custom-cell样式定义添加到 ./src/styles.(s)css ,也可以将组件的封装设置为 None。
如果您还不知道,您可以从角度指南查看视图封装的详细信息。
编辑 (回应汤姆的评论)
我也不想要这样的解决方案,但不幸的是,这似乎就是这样......我准备了一个演示应用程序,它显示了我想要讲述的内容。
.my-custom-cell 分配给名称列。
.my-custom-cell-global 分配给性别列。
./app/demo-component.ts
<ngx-datatable-column name="name" [cellClass]="'my-custom-cell'">
<ng-template ngx-datatable-cell-template let-value="value">
{{value}}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="gender" [cellClass]="'my-custom-cell-global'">
<ng-template ngx-datatable-cell-template let-value="value">
{{value}}
</ng-template>
</ngx-datatable-column>
./app/demo-component.scss
.my-custom-cell {
background: red;
}
./styles.scss
.my-custom-cell-global {
background: #e6f2ff;
}
如您所见,红色背景未分配给名称列。但是性别列的背景颜色为蓝色。
这是因为视图封装告诉 cli 编译 .my-custom-cell 类,如下所示:
.my-custom-cell[_ngcontent-c176]{background:red}
但是DatatableComponent 正在使用 ViewEncapsulation.None。如果您检查名称列中的一个单元格,则可以看到具有 .my-custom-cell 类的 datatable-body-cell 没有 [_ngcontent-c176] 属性。所以这个类没有被应用。
如果取消注释encapsulation line:46那么您将看到 [_ngcontent-c176] 属性已从已编译的 .my-custom-cell 中消失,并且 name 列成功获取样式。
如果您找到其他合适的方法,请告诉我。