ng2-bootstrap ページネーション コンポーネントとブートストラップ テーブルを統合しようとしています。
ngFor ディレクティブがロードされた単純なブートストラップ テーブルがあります。
<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
配列からエントリが削除されると、コンソールに次のエラーが表示されます。
Expression 'rows in App@9:8' has changed after it was checked.
実際の例はここにあります:
http://plnkr.co/edit/5zxamBiWISBpEmXYP5UK?p=previewlast
ボタンを
クリックしてからcut data
.
何かアドバイス?