Ngx-datatable cellClass 不工作
Ngx-datatable cellClass not working
我尝试将我的自定义 css 附加到 ngx-datatable 单元格。
<ngx-datatable-column
*ngFor="let column of tableOptions.columnDefs"
[cellClass]="'my-custom-cell'"
...
Css 对于 my-custom-cell
:
.my-custom-cell{
padding: 0;
}
在开发工具中我可以看到 datatable-body-cell
有 类
class="datatable-body-cell my-custom-cell sort-active"
问题是没有 css 被覆盖
您可能遇到了有关视图封装的问题。
ngx-datatable 在其样式上使用 ViewEncapsulation.None。您可以将 .my-custom-cell 样式定义添加到 ./src/styles.(s)css 或者您也可以 set your component's encapsulation to None.
如果您还不知道view encapsulation from angular guide,可以查看详细信息。
编辑 (对的回复)
我也不想要这样的解决方案,但不幸的是,这似乎是这样......
我已经准备好 a demo app,它显示了我想告诉的内容。
.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 class 如下所示:
.my-custom-cell[_ngcontent-c176]{background:red}
但是DatatableComponent is using ViewEncapsulation.None。如果您检查名称列中的一个单元格,那么您可以看到具有 .my-custom-cell class 的数据表主体单元格没有
[_ngcontent-c176] 属性。所以 class 没有应用。
如果你取消注释 encapsulation line:46 然后你会看到 [_ngcontent-c176] 属性已经从编译的 .my-custom-cell 中消失,并且名称列成功获得样式。
如果您找到其他合适的方法,请告诉我。
以下适合我的作品:
:host /deep/ .my-custom-cell {
background: red;
}
我尝试将我的自定义 css 附加到 ngx-datatable 单元格。
<ngx-datatable-column
*ngFor="let column of tableOptions.columnDefs"
[cellClass]="'my-custom-cell'"
...
Css 对于 my-custom-cell
:
.my-custom-cell{
padding: 0;
}
在开发工具中我可以看到 datatable-body-cell
有 类
class="datatable-body-cell my-custom-cell sort-active"
问题是没有 css 被覆盖
您可能遇到了有关视图封装的问题。
ngx-datatable 在其样式上使用 ViewEncapsulation.None。您可以将 .my-custom-cell 样式定义添加到 ./src/styles.(s)css 或者您也可以 set your component's encapsulation to None.
如果您还不知道view encapsulation from angular guide,可以查看详细信息。
编辑 (对
我也不想要这样的解决方案,但不幸的是,这似乎是这样...... 我已经准备好 a demo app,它显示了我想告诉的内容。
.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 class 如下所示:
.my-custom-cell[_ngcontent-c176]{background:red}
但是DatatableComponent is using ViewEncapsulation.None。如果您检查名称列中的一个单元格,那么您可以看到具有 .my-custom-cell class 的数据表主体单元格没有 [_ngcontent-c176] 属性。所以 class 没有应用。
如果你取消注释 encapsulation line:46 然后你会看到 [_ngcontent-c176] 属性已经从编译的 .my-custom-cell 中消失,并且名称列成功获得样式。
如果您找到其他合适的方法,请告诉我。
以下适合我的作品:
:host /deep/ .my-custom-cell {
background: red;
}