- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要在客户端实现分页。从后面,我收到以卡片形式带来的待办事项。我决定连接 mat-paginator,但遇到了问题。我把待办事项的数量传给了[length] = "length",但是翻页把总数拆分成几个部分是行不通的,在不同的页面显示。比如我现在有13个todo(可能还有更多),我需要在1个页面上显示4个todo。 4 然后是第二个,依此类推。这是我的代码。
component.html
...
<div class="tasks-list" >
<mat-card class="task-card" *ngFor="let task of tasks">
<mat-card-header>
<mat-card-title>
/////////some code////////////
</mat-card>
</div>
<mat-paginator [length]="length"
[pageSize]="4"
[pageSizeOptions]="[4, 8, 12]">
</mat-paginator>
component.ts
@ViewChild(MatPaginator) paginator: MatPaginator;
constructor(private taskService: TaskListService) {}
ngOnInit() { this.getTasks();}
getTasks() {
this.taskService.getTasks()
.subscribe(
(data) => {
this.tasks = data;
this.length = this.tasks.length;
})
}
我很困惑下一步该怎么做才能让它发挥作用。我到处都主要写如何在表格中打开分页,但我没有表格。如果该行添加 'async',则它将不起作用。
最佳答案
分页器使用表格数据源。
所有的分页工作都是在迭代器方法中完成的。此方法计算出 skip and take 并将其分配给卡片列表的数据源。
查看:
<div class="tasks-list">
<mat-card class="task-card" *ngFor="let task of dataSource">
<mat-card-header>
<mat-card-title>
{{task}}
</mat-card-title>
</mat-card-header>
</mat-card>
</div>
<mat-paginator #paginator [pageSize]="pageSize" [pageSizeOptions]="[1, 10, 20]" [showFirstLastButtons]="true" [length]="totalSize"
[pageIndex]="currentPage" (page)="pageEvent = handlePage($event)">
</mat-paginator>
组件:
export class PaginatorOverviewExample implements OnInit {
public tasks: any[];
public dataSource: any;
public pageSize = 1;
public currentPage = 0;
public totalSize = 0;
@ViewChild(MatPaginator) paginator: MatPaginator;
ngOnInit() { this.getTasks(); }
getTasks() {
// Replace with HTTP call
var data = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"];
this.dataSource = new MatTableDataSource<any>(data);
this.dataSource.paginator = this.paginator;
this.tasks = data;
this.totalSize = this.tasks.length;
this.iterator();
}
handlePage(event?: PageEvent) {
this.currentPage = event.pageIndex;
this.pageSize = event.pageSize;
this.iterator();
}
private iterator() {
const end = (this.currentPage + 1) * this.pageSize;
const start = this.currentPage * this.pageSize;
const part = this.tasks.slice(start, end);
this.dataSource = part;
}
}
关于html - 分页在角度 7 中不起作用。(我使用角度 Material ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55043614/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!