我有两个组件.两者都有mat table和paginators,虽然代码类似,但pagination对一个组件有效,而对另一个组件无效.以下是我的html:

<div class="mat-elevation-z8">
    <mat-table [dataSource]="dataSource" matSort>
        <ng-container matColumnDef="col1">
            <mat-header-cell *matHeaderCellDef mat-sort-header> Column1 </mat-header-cell>
            <mat-cell *matCellDef="let row"> {{row.col1}} </mat-cell>
        </ng-container>

        <ng-container matColumnDef="col2">
            <mat-header-cell *matHeaderCellDef mat-sort-header> Column2 </mat-header-cell>
            <mat-cell *matCellDef="let row"> {{row.col2}} </mat-cell>
        </ng-container>

        <!-- Different columns goes here -->

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

    <mat-paginator #scheduledOrdersPaginator [pageSizeOptions]="[5, 10, 20]"></mat-paginator>
</div>

下面是我在组件中的代码.ts:

dataSource: MatTableDataSource<any>;
displayedColumns = ['col1', 'col2', ... ];

@ViewChild('scheduledOrdersPaginator') paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort;

ngOnInit(): void {
    // Load data
    this.dataSource = new MatTableDataSource(somearray);
    this.dataSource.paginator = this.paginator;
    this.dataSource.sort = this.sort;
}

对于另一个组件,类似的代码可以正常工作,并且可以正确地使用分页来呈现表,不知道这段代码出了什么问题.

任何帮助都将不胜感激

推荐答案

我通过使用超时围绕实例化解决了类似的问题.试试这个:

setTimeout(() => this.dataSource.paginator = this.paginator);

Angular相关问答推荐

将Angular Metal的芯片组件集成到我的表单中时出错

在Angular中将路由解析器提供程序和组件提供程序相结合

向Anguar 17项目添加服务以启动和停止Loader-NGX-UI-Loader

Angular 16+使用ngTemplateOutlet有条件地呈现几个模板中的一个

根据环境变量动态加载Angular templateUrl

有角.服务.模块构建失败.无法读取未定义的属性(读取文件)

如何根据响应变化更改 Angular Carousel 的cellsToShow

TypeError:this.restoreDialogRef.afterClosed 不是函数

过滤 ngfor Angular 的计数

如何以编程方式关闭 ng-bootstrap 模式?

Angular 2.0 中 $scope 的替代品

在 Ionic 2 中使用 NodeJS.Timer 时找不到命名空间 NodeJS

Angular 2 - ngfor 没有包装在容器中

Angular 2:formGroup 需要一个 FormGroup 实例

使用 DomSanitizer 绕过安全性后,安全值必须使用 [property]=binding

Angular 2:将外部js文件导入组件

如何在 Angular cli 项目中包含来自 node_modules 的assets

测试一个包含 setTimeout() 的函数

Firestore 从集合中获取文档 ID

此类通过 SomeModule -> SomeComponent 对消费者可见,但不会从顶级库入口点导出