7

我尝试将我的自定义 css 附加到 ngx-datatable 单元格。

<ngx-datatable-column 
  *ngFor="let column of tableOptions.columnDefs"
  [cellClass]="'my-custom-cell'"
  ...

用于my-custom-cell

.my-custom-cell{
  padding: 0;
}

在开发工具中,我可以看到datatable-body-cell有类

class="datatable-body-cell my-custom-cell sort-active"

问题是没有css被覆盖

4

1 回答 1

10

您可能正面临有关视图封装的问题。

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 列成功获取样式。

如果您找到其他合适的方法,请告诉我。

于 2017-11-09T10:37:34.080 回答