ng2-bootstrap pagination componentとブートストラップテーブルを統合しようとしています。ng2-bootstrapページングとブートストラップテーブルの統合エラー
Iは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
コンテンツをページ付けコンポーネントによって決定される。 Iは、テーブルのエントリの束を含ん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 [email protected]:8' has changed after it was checked.
ライブの例では、ここで見つけることができます:ちょうど http://plnkr.co/edit/5zxamBiWISBpEmXYP5UK?p=preview last
ボタンをクリックしてからcut data
をクリックします。
アドバイスはありますか?
。私は値を設定して、* ngForディレクティブを保持しているdivのタグを閉じた直後にそれを呼び出しました。 1ページあたりのアイテム数を制限するためにテーブルで何かをしなければなりませんでしたか?私は1ページにすべてのアイテムを取得しています。 – Winnemucca
@Winnemucca itemPerPageはページ区切りディレクティブのプロパティであり、テーブルには影響しません。そう、はい、あなたはテーブルのデータを制限する必要があります。上記のプランナでは、onPageChange関数によって行われます – Ayala