【问题标题】:PrimeNG datatable custom cssPrimeNG 数据表自定义 css
【发布时间】:2023-03-22 13:36:01
【问题描述】:

我想在我的 Angular 项目中设置数据表标题的样式。我在我的项目中使用 PrimeNG 组件。但我无法为它们设计样式。它不会覆盖样式。

我尝试了primeNG - implement css style to dataTable 的解决方案,但它对我不起作用。

我有一个列表组件,还有我的数据表:

<p-dataTable #dt [value]="auftraege" [rows]="10" [paginator]="true" [(first)]="first" [sortMode]="multiple"
           [loading]="loading" loadingIcon="fa-spinner" class="beatDatatable">
<p-header>{{auftraege.length}} Aufträge</p-header>
<p-column field="cat" header="Datum/Uhrzeit" [sortable]="true">
  <ng-template pTemplate="body" let-order="rowData">
    {{order.cat | date:'yMdjm'}}
  </ng-template>
</p-column>
<p-column field="schadennummer" header="Schadennummer" [sortable]="true"></p-column>
<p-column field="kennzeichen" header="Kennzeichen" [sortable]="true"></p-column>
<p-column field="jobId" header="Euconnr." [sortable]="true"></p-column>
<p-column field="externeid" header="Auftragsnr." [sortable]="true"></p-column>
<p-column field="status.anzeige" header="Status" [sortable]="true"></p-column>
</p-dataTable>

我的 list-component.css 不会覆盖样式。例如,我想更改标题的颜色。我也从浏览器检查器中复制了样式,但这也没有帮助。我不知道如何改变它。我尝试了很多东西。也许有人知道。

【问题讨论】:

  • 我会发布我的答案。这是覆盖表格标题样式的方法试试这个希望这会有所帮助

标签: css angular datatable primeng


【解决方案1】:

试试这样:

css 文件中的行尾

p-datatable.beatDatatable .ui-datatable .ui-datatable-thead .ui-state-default {
    color: #000 !important;
    line-height: 2 !important;
    text-align: center !important;
}

【讨论】:

    【解决方案2】:

    试试这样的:

    在list-component.css中添加CSS样式后,将list-component.ts中的封装设置为ViewEncapsulation.None

    @Component({
      selector: '<selector-name>',
      templateUrl: './list-component.html',
      styleUrls:['./list-component.css'],
      encapsulation : ViewEncapsulation.None
    })
    

    也导入

    import ViewEncapsulation from '@angular/core'.
    

    还将自定义 CSS 样式设置为 Chandru 回答中提到的 !important。

    【讨论】:

      【解决方案3】:

      当您想要覆盖第三方模块的样式时,您通常需要绕过 Angular 模拟的视图封装。这可以像 Zulu 描述的那样完成,或者或者,如果您不想禁用整个组件的视图封装,您可以使用阴影穿透后代组合器来定位您想要设置样式的特定类.

      将 ::ng-deep 添加到要设置样式的类的末尾。例如:

      HTML

      <p-dataTable class="some-custom-class-name">
          ...
      </p-dataTable>
      

      风格

      .some-custom-class-name::ng-deep th {
          background-color: blue !important;
      }
      

      在此处阅读有关 Shadow-Piercing 组合器的更多信息:The New Angular ::ng-deep and the Shadow-Piercing Combinators Drop

      【讨论】:

        【解决方案4】:

        我有同样的问题,我找到了一种方法来解决这个问题,方法是在主 style.css 文件中个性化primeng 组件。这可能不是最好的做法,但它确实有效。 (并且可能以更合适的方式,您可以使用数据表在组件旁边创建一个 scss/css 文件,在其中覆盖样式,例如 data-table-override.scss,然后使用 @import "components/my-component-using-datatable/data-table-override.scss"; 将此文件导入您的主 style.scss 你可以通过浏览器检查工具分析 dom 找到对应的类名。 而且我现在建议您使用primeng 发布的新turbo table,它更可定制,更易于使用。 希望这对你有帮助:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-03
          • 1970-01-01
          • 1970-01-01
          • 2017-10-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多