【问题标题】:How to fix mat-paginator size如何修复 mat-paginator 大小
【发布时间】:2020-02-06 20:30:25
【问题描述】:

mat-table 进行分页时,sticky-table 没有灵活性。 在移动后的分页中,没有应用 css(如图所示)。 我试图给背景颜色,但它不起作用。参考这段代码: https://stackblitz.com/angular/bbmgqanjelq?file=app%2Ftable-sticky-columns-example.css

.mat-paginator{
    background-color: brown;
    color: gold;
    font-size: 1rem;
}

.mat-header-cell{
    font-size: 1rem;
    background-color: brown;
    color: gold;
  }
.example-container {
  height: 460px;
  width: 550px;
  overflow: auto;
}
table {
  width: 800px;
}
<div class="example-container mat-elevation-z8">
  <table mat-table [dataSource]="dataSource">

    <!-- Name Column -->
    <ng-container matColumnDef="name" sticky>
      <th mat-header-cell *matHeaderCellDef> Name </th>
      <td mat-cell *matCellDef="let element"> {{element.name}} </td>
    </ng-container>

    <!-- Position Column -->
    <ng-container matColumnDef="position">
      <th mat-header-cell *matHeaderCellDef> No. </th>
      <td mat-cell *matCellDef="let element"> {{element.position}} </td>
    </ng-container>

    <!-- Weight Column -->
    <ng-container matColumnDef="weight">
      <th mat-header-cell *matHeaderCellDef> Weight </th>
      <td mat-cell *matCellDef="let element"> {{element.weight}} </td>
    </ng-container>

<!-- Star Column -->
    <ng-container matColumnDef="star" stickyEnd>
      <th mat-header-cell *matHeaderCellDef></th>
      <td mat-cell *matCellDef="let element">
        <mat-icon>more_vert</mat-icon>
      </td>
    </ng-container>

<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
 </table>

<mat-paginator [length]="50" [pageSizeOptions]="[10, 20, 30]" showFirstLastButtons>
</mat-paginator>
</div>

如果我们移动表格分页器应该看起来和以前一样。

【问题讨论】:

    标签: css angular


    【解决方案1】:

    也许您需要像这样在scsscss 中使用::ng-deep 属性:

    ::ng-deep .mat-paginator{
        background-color: brown;
        color: gold;
        font-size: 1rem;
    }
    
    ::ng-deep .mat-header-cell{
        font-size: 1rem;
        background-color: brown;
        color: gold;
    }
    

    有关 ng-deep 的更多信息,请查看此link

    【讨论】:

    • 该问题没有为您或我提供足够的上下文来提供适合该问题的答案:考虑在提供答案之前询问更多信息!
    • @Maryannah 我不同意你的看法。他将问题标记为角度问题,并通过分析 css 和使用角度材料的mat-table (从这里)@ 987654328@ 很清楚。他可以提供有关上下文的更多详细信息,但您可以理解问题所在。问题在于 css 没有应用于材料组件,对于这些情况,大多数时候问题是因为没有使用 ::ng-deep 属性。
    • @Maryannah 你真的应该阅读meta.stackoverflow.com/questions/276971/…。 “这是一个引入 Stack Exchange 社区的功能,因此不鼓励投票”。
    【解决方案2】:

    我认为您目前无能为力。

    sticky 使用起来非常棘手,这就是为什么你应该避免使用它(也是not that well supported)。

    您可以将background: brown; 添加到您的.example-container,这将导致此堆栈闪电战:https://stackblitz.com/edit/angular-mxdsdk?file=app/table-sticky-columns-example.css

    也许你可以解释你的最终目标,我们可以想出一个替代方案?

    【讨论】:

      【解决方案3】:

      好的,我要添加另一个答案,因为这个答案与前一个完全不同。

      您可以使用 Angular 渲染器和子视图来将分页器的大小增加到表格的大小。

      这里是 stackblitz 演示:https://stackblitz.com/edit/angular-mxdsdk-d2b7xa?file=app/table-sticky-columns-example.ts

      如您所见,分页器获取表格的总大小并显示在右侧。不确定您是否想要它,但它为您提供了一种新的使用方式。

       <table mat-table [dataSource]="dataSource" #table>
       ...
       <mat-paginator sticky #paginator></mat-paginator>
      
      @ViewChild('table', { static: true, read: ElementRef }) table: ElementRef<HTMLDivElement>;
      @ViewChild('paginator', { static: true, read: ElementRef }) paginator: ElementRef<HTMLDivElement>;
      
      constructor(
        private renderer: Renderer2
      ) {}
      
      ngOnInit() {
        const width = this.table.nativeElement.getBoundingClientRect().width;
        this.renderer.setStyle(this.paginator.nativeElement, 'width', width + 'px');
      }
      

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,但已经解决了。

        将 mat-paginator 放在 的容器 div 之外,那么这个分页宽度问题甚至不会一开始就出现。滚动仅适用于表格数据本身,而不适用于分页。

        【讨论】:

          猜你喜欢
          • 2019-06-19
          • 1970-01-01
          • 2019-07-08
          • 1970-01-01
          • 2023-01-11
          • 2018-05-15
          • 2020-07-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多