如何固定垫子的大小

时间:2019-10-09 13:24:35

标签: css angular

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

enter image description here

![enter image description here

.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>

如果我们移动表格分页器,则外观应与以前相同。

4 个答案:

答案 0 :(得分:1)

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

您可以将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');
}

enter image description here

答案 1 :(得分:0)

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

::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

答案 2 :(得分:0)

我认为您目前无法做任何事情。

粘粘的用法非常棘手,这就是为什么应避免使用粘粘(也就是not that well supported)的原因。

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

enter image description here

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

答案 3 :(得分:0)

我也面临着同样的问题,但是得到了解决。

将mat-paginator放置在的容器div的外面,这样一开始就不会出现此分页宽度问题。滚动仅适用于表格数据本身,不适用于分页。