私はAngularDatatablesをAngular6で使用しています。コードは機能し、レンダリングできるテーブルが表示されます。検索できません表示するアイテムの数を制御できませんフッターに「0から0のエントリを表示しています」と「テーブルにデータがありません」と表示されます
users.ts
ngOnInit() {
this.dtOptions = {
pagingType: 'full_numbers',
pageLength: 7,
deferRender: true,
retrieve: true
};
if (localStorage.getItem('data') !== null) {
const data = JSON.parse(localStorage.getItem('data'));
this.item = data.body.response;
if (Array.isArray(this.item.domains) || this.item.domains.length) {
for (let i = 0; i < this.item.domains.length; i++) {
this.users.getUsers(this.item.domains[i].id).subscribe((res: any) => {
this.domain_users = res.response.items;
// the api returns arrays and so I had to iterate over them, and not all of them
// the first array is empty
for (let j = 0; j < this.domain_users.length; j++) {
if (this.domain_users[j].user !== undefined) {
this.user.push(this.domain_users[j].user);
}
}
}, error => {
console.log('getUsers error, probably session expired on the server ' + error);
});
}
}
}
}
ngAfterViewInit(): void {
this.dtTrigger.next();
}
ngOnDestroy(): void {
// Do not forget to unsubscribe the event
this.dtTrigger.unsubscribe();
}
rerender(): void {
this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => {
// Destroy the table first
dtInstance.destroy();
// Call the dtTrigger to rerender again
this.dtTrigger.next();
});
}
html
<table id="detailed-resource-optria" datatable [dtOptions]="dtOptions" [dtTrigger]="dtTrigger" class="compact row-border hover cell-border"
data-page-length='10'>
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of user">
<td>{{item.profile?.fname}}</td>
<td>{{item.profile?.lname}}</td>
</tr>
</tbody>
</table>
問題は、テーブルthis.user
を経由せずに直接dtOptions
データを入力しているためだと確信していますが、修正方法がわかりません。ソースとして配列からデータを提供しようとしましたが、機能しません。
this.dtTrigger.next();
すべてのデータをthis.userにプッシュした後、手動で実行しようとしましたか?ここで提案されているように:l-lin.github.io/angular-datatables /#/ basic / angular-way
(opの要求に応じて回答するように昇格したコメント)
これは単なるタイミングの問題だと思います。非同期クエリはngAfterViewInit
メソッドが実行されるまで返されないため、すべてのデータが読み込まれた後、追加のトリガーが必要でした。それがうまくいったことをうれしく思います:)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加