angular - 有没有办法在不使用 MatTableDataSource 的情况下对材料表进行材料分页?角 10
问题描述
有没有办法在不使用 MatTableDataSource 的情况下对表格进行材料分页?我在网上看到的每个示例都让我使用 MatTableDataSource,但我不确定如何实际使用它。我正在从数据库表中填充我的材料表。
users: any[] = [];
displayData = [];
dataSource = [];
@ViewChild(MatPaginator) paginator: MatPaginator;
constructor(
private authService: AuthService,
private userService: UserService,
private router: Router,
private httpClient: HttpClient
) {}
ngOnInit(): void {
this._getUsers();
}
private _getUsers() {
this.userService;
this.userService.getUsers().subscribe((data) => {
this.users = data.users;
this.displayData = data.users;
this.dataSource = this.users;
});
<div class="users">
<app-extend-table #usersTable
[header]="header"
[data]="displayData"
[columns]="columns">
</app-extend-table>
<!-- <mat-paginator [pageSizeOptions]="[5, 10, 20]" showFirstLastButtons></mat-paginator> -->
</div>
解决方案
您需要添加[length]="users?.length"
并只监听 的page
输出事件mat-pagination
并在表格中显示相应的项目
像这样。
<mat-paginator (page)="pageChanged($event)" [length]="users?.length" [pageSizeOptions]="[5, 10, 20]" showFirstLastButtons></mat-paginator>
在 ts
// import PageEvent from angulat material pagination
pageChanged(event: PageEvent) {
const users = [...this.users];
this.dataSource = users.splice((event.pageIndex - 1) * event.pageSize, event.pageSize );
}
这是工作示例 https://stackblitz.com/edit/angular-adrxts?file=app/table-pagination-example.ts
推荐阅读
- javascript - 无法使用 Object.assign 获取文档 keydown 事件
- python - 在 django oauth 工具包中使用其他一些用户模型而不是 settings.AUTH_USER_MODEL
- angularjs - AngularJS ng-repeat 带有过滤器 - notarray 错误,预期的数组但收到:
- css - 向 div 添加了溢出-y 滚动条隐藏了我的 x-溢出
- django - 在 django 模板中为模态定位正确的图像
- javascript - React 组件覆盖内部渲染
- azure-sql-database - 行级安全性未按预期工作
- c# - Registry.CurrentUser.CreateSubKey 没有创建任何子键?
- javascript - 用javascript计算程序
- javascript - 从数组中选择 5 个随机字母