在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>
如果我们移动表格分页器,则外观应与以前相同。
答案 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');
}
答案 1 :(得分:0)
也许您需要像这样在::ng-deep
或scss
中使用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
也许您可以解释您的最终目标,我们可以提出一个替代方案?
答案 3 :(得分:0)
我也面临着同样的问题,但是得到了解决。
将mat-paginator放置在的容器div的外面,这样一开始就不会出现此分页宽度问题。滚动仅适用于表格数据本身,不适用于分页。