【发布时间】:2019-03-21 13:57:43
【问题描述】:
使用带有分页器的表格。 通过 http 调用绑定数据。 版本 Angular 5,材质 5.0.4
在页面事件中它从服务器获取数据,我尝试记录总长度变量是否发生变化,但事实并非如此。
这表明从页面事件返回的分页的长度属性正在增加。
奇怪的是,我也在 stackbliz 上实现了在 github 上演示和提出问题,但它工作正常。
相同的代码,相同的版本,但在本地它没有按预期工作。
HTML
<mat-paginator #paginator [length]="totalLength"
[pageSize]="limit"
(page)="changePage($event)">
</mat-paginator>
.TS
changePage(event) {
console.log(event,'total length',this.totalLength)
if (this.totalLength > this.dataSource.data.length) {
// next page
this.skip = event.pageSize * event.pageIndex;
this.getComplains(true);
}
}
getComplains(addNew:boolean = false) {
this.http.getCustomerComplains({
limit: this.limit,
skip: this.skip,
total: this.totalLength
}, (data) => {
if (data) {
setTimeout(() => {
if (addNew === true) {
let oldData = this.dataSource.data;
this.dataSource.data = oldData.concat(data.list);
} else {
if (data['list']) {
this.dataSource.data = data['list'];
}
this.changeDetectorRefs.detectChanges();
}
if (this.totalLength === 0) {
this.totalLength = data['total'];
}
})
}
}, (err) => {
console.log(err);
})}
limit:number = 10;
skip:number = 0;
totalLength:number = 0;
【问题讨论】:
-
你为什么不在这里添加你的答案?解决了github.com/angular/material2/issues/10526
-
Angular Material 团队尚未确认,但我稍后会添加它,以帮助未来面临相同问题的开发人员。