ngx-datatable rowClass 不工作
ngx-datatable rowClass is not working
这个问题可能已经有了答案,因为我已经看到了一些答案,但并没有帮助我解决问题。我的问题是 ngx-datatable 中的 rowClass 对我不起作用。
数据表代码 - test.component.html
<ngx-datatable class="material"
[rows]="rows"
[columnMode]="'force'"
[reorderable]="reorderable"
[rowClass]="getRowClass"
(activate)="onActivate($event)">
<ngx-datatable-column name="Cabinet Name" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
<mat-icon class='folder-color'>folder</mat-icon>
{{ row?.cabinetname }}
</ng-template>
</ngx-datatable-column>
</ngx-datatable>
TS代码 - test.component.ts
getRowClass = (row) => {
return {
'row-color': true
};
}
SCSS 代码 - test.component.scss
.row-color {
background-color: green;
}
在 chrome 开发人员工具中,它显示 行颜色 class 添加,但行没有将绿色作为背景颜色。我不知道上面的代码有什么问题。请指导我解决问题的正确方法。
注意:我正在研究Angular 5
使 getRowClass() 成为一个合适的函数,它将起作用:
getRowClass(row): string {
return 'row-color';
}
尝试将 css 添加到根级别 src
文件夹中的 styles.scss
中(除了 index.html 和 main.ts)。
.row-color {
background-color: green;
}
当您使用组件添加样式时,它会生成样式......和..
TL;DR;
参考:
- https://scotch.io/tutorials/all-the-ways-to-add-css-to-angular-2-components
- http://blog.ng-book.com/css-isolation-in-angular-2-components/
更新
提供从父选择器到子选择器的样式。
即如果您要为单元格应用 CSS,请像这样提供选择器
.ngx-datatable.material .datatable-body .datatable-body-row .datatable-body-cell.row-color{
background-color: green;
}
PS:尝试提供这是你的全局 styles.scss
问题是您的 .row-color
仅限于测试组件。你需要在它前面加上 /deep/
来打破封装:
/deep/ .row-color {
background-color: green;
}
或者,您可以使用 ViewEncapsulation.None
让您的 CSS 规则在应用程序中运行。
或者您需要将此规则放在全局应用样式中的某个位置(不绑定到任何一个组件)。
这是一个有效的 Stackblitz。
ViewEncapsulation.None
的意思是这样的:
您编写的任何 css 不仅会应用于您的组件,还会应用于整个上下文(页面)。如果您检查元素,您会在 angular 组件上看到您有 <span _ngcontent-c15>...</span>
之类的东西。所以你组件上的所有东西,angular 都用属性 _ngcontent-c15
(或类似的)标记。那么您组件中的所有 样式 就不仅仅是 span
,而是 span[_ngcontent-c15]
。因此,如果您将 spans 涂成红色,它就不会泄漏到其他组件(例如 _content-c16
)。 ViewEncapsulation.None
从您的组件中删除该属性 CSS 因此它在整个页面上都有效。
试试这个:
[class.datatable-group-header-container] = "true"
[ngClass] = "{'datatable-group-header-container': true}"
这个问题可能已经有了答案,因为我已经看到了一些答案,但并没有帮助我解决问题。我的问题是 ngx-datatable 中的 rowClass 对我不起作用。
数据表代码 - test.component.html
<ngx-datatable class="material"
[rows]="rows"
[columnMode]="'force'"
[reorderable]="reorderable"
[rowClass]="getRowClass"
(activate)="onActivate($event)">
<ngx-datatable-column name="Cabinet Name" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
<mat-icon class='folder-color'>folder</mat-icon>
{{ row?.cabinetname }}
</ng-template>
</ngx-datatable-column>
</ngx-datatable>
TS代码 - test.component.ts
getRowClass = (row) => {
return {
'row-color': true
};
}
SCSS 代码 - test.component.scss
.row-color {
background-color: green;
}
在 chrome 开发人员工具中,它显示 行颜色 class 添加,但行没有将绿色作为背景颜色。我不知道上面的代码有什么问题。请指导我解决问题的正确方法。
注意:我正在研究Angular 5
使 getRowClass() 成为一个合适的函数,它将起作用:
getRowClass(row): string {
return 'row-color';
}
尝试将 css 添加到根级别 src
文件夹中的 styles.scss
中(除了 index.html 和 main.ts)。
.row-color {
background-color: green;
}
当您使用组件添加样式时,它会生成样式......和..
TL;DR;
参考:
- https://scotch.io/tutorials/all-the-ways-to-add-css-to-angular-2-components
- http://blog.ng-book.com/css-isolation-in-angular-2-components/
更新
提供从父选择器到子选择器的样式。
即如果您要为单元格应用 CSS,请像这样提供选择器
.ngx-datatable.material .datatable-body .datatable-body-row .datatable-body-cell.row-color{
background-color: green;
}
PS:尝试提供这是你的全局 styles.scss
问题是您的 .row-color
仅限于测试组件。你需要在它前面加上 /deep/
来打破封装:
/deep/ .row-color {
background-color: green;
}
或者,您可以使用 ViewEncapsulation.None
让您的 CSS 规则在应用程序中运行。
或者您需要将此规则放在全局应用样式中的某个位置(不绑定到任何一个组件)。
这是一个有效的 Stackblitz。
ViewEncapsulation.None
的意思是这样的:
您编写的任何 css 不仅会应用于您的组件,还会应用于整个上下文(页面)。如果您检查元素,您会在 angular 组件上看到您有 <span _ngcontent-c15>...</span>
之类的东西。所以你组件上的所有东西,angular 都用属性 _ngcontent-c15
(或类似的)标记。那么您组件中的所有 样式 就不仅仅是 span
,而是 span[_ngcontent-c15]
。因此,如果您将 spans 涂成红色,它就不会泄漏到其他组件(例如 _content-c16
)。 ViewEncapsulation.None
从您的组件中删除该属性 CSS 因此它在整个页面上都有效。
试试这个:
[class.datatable-group-header-container] = "true"
[ngClass] = "{'datatable-group-header-container': true}"