gpt4 book ai didi

typescript - ng2-bootstrap 分页和 bootstrap 表集成错误

转载 作者:太空狗 更新时间:2023-10-29 17:52:48 24 4
gpt4 key购买 nike

我正在尝试整合 ng2-bootstrap pagination component和引导表。

我有一个加载了 ngFor 指令的简单 Bootstrap 表:

<tr>
<th *ngFor="#col of cols">{{col.header}}
</tr>
</thead>
<tbody>
<tr *ngFor="#row of rows">
<td *ngFor="#col of cols">{{row[col.field]}}</td>
</tr>
</tbody>

rows 内容由分页组件决定:我有一个名为 data 的数组,其中包含表的一堆条目。数组长度用于确定分页组件的totalItems:

<pagination class="pagination-sm"
[(ngModel)]="page"
[totalItems]="data.length"
[itemsPerPage]="itemsPerPage"
[maxSize]="maxSize"
[boundaryLinks]="true"
(pageChanged)="onPageChange($event)">
</pagination>

表格的rows 变量只包含当前页面的条目。这是通过使用分页组件提供的 pageChange 事件完成的:

onPageChange(page:any) {
let start = (page.page - 1) * page.itemsPerPage;
let end = page.itemsPerPage > -1 ? (start + page.itemsPerPage) : this.data.length;
this.rows = this.data.slice(start, end);
}

到目前为止一切顺利...问题是可以从 data 数组中删除条目。如果分页栏指向最后一页,然后条目从 data 数组中删除,则控制台中会显示以下错误:

表达式 'rows in App@9:8' 在检查后发生了变化。

一个活生生的例子可以在这里找到: http://plnkr.co/edit/5zxamBiWISBpEmXYP5UK?p=preview只需点击 last 按钮,然后点击 cut data

有什么建议吗?

最佳答案

作为解决方法,我决定稍微更改 cutData 函数。每次切数据前,将当前页重置为1:

cutData(){
this.page = 1;
this.onPageChange({page: this.page, itemsPerPage: this.itemsPerPage})
this.data = this.data.slice(0, this.data.length/2);
}

现在一切似乎都按预期工作。

另一种选择(如 here 中提到的类似问题)是在 rows 更改后手动触发组件的更改检测:

constructor(private cd: ChangeDetectorRef) {}

(...)

onPageChange(page:any) {
let start = (page.page - 1) * page.itemsPerPage;
let end = page.itemsPerPage > -1 ? (start + page.itemsPerPage) : this.data.length;
this.rows = this.data.slice(start, end);
this.cd.detectChanges();
}

关于typescript - ng2-bootstrap 分页和 bootstrap 表集成错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36874587/

24 4 0
文章推荐: typescript - angular2 中未定义 http
文章推荐: angular - 带有 angular2-material 的工具栏组件
文章推荐: Angular2 路由 : How do I use [routerLink] within a
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com