私のコンポーネントでは、データテーブルを使用してバックエンドからのデータを表示しています。私は、バックエンドから(サービスを使用して)データを取得し、それを正常に解析し、データをデータテーブルに表示することができます。しかし、私の問題は、コンポーネントが最初にレンダリングされたときに、ネットワークコールがまだ完了していないため、テーブルに"テーブルにデータがありません"が設定されていることです。ネットワークコールが完了すると、テーブルにはサーバーからのデータが入力されますが、「テーブルにはデータがありません」というメッセージが表示されます。DataTableを角度2で再レンダリングする
fetchData(){
this.networkservice.getAllReceipts()
.subscribe(
res => {
this.itemList = res;
}, error => alert(error),
() => this.showData());
}
私はngOnInit()内でこのメソッドを呼び出しています -
はここに私のネットワーク呼び出しコードです。私はまた、コンストラクタ内でこのメソッドを呼び出すことも試みましたngAfterViewChecked()、しかし成功はありません。
私のshowData()メソッドは決して呼び出されません。
データテーブルのドキュメントでは、テーブルを再レンダリングするために使用できるrerender()と呼ばれるものが挙げられていますが、どこで使用するのかわかりません。私はそれを私のshowData()メソッドの中に置いていますが、決して呼び出されることはありません。
私も "setTimeout"を使って5秒のタイムアウトを設定しましたが、それでも動作しないようです。
私のHTMLコード -
<table id="receiptTable" [dtTrigger]="dtTrigger" datatable class="row-border hover">
<thead>
<tr>
<th>ID</th>
<th>First name</th>
<th>LastName name</th>
<th>Action</th>
</tr>
</thead>
<tbody *ngIf="itemList">
<tr *ngFor="let user of itemList">
<td>{{user.id}}</td>
<td>{{user.firstName}}</td>
<td>{{user.lastName}}</td>
<td><button (click)="getUser(user.id)">Edit</button></td>
</tr>
</tbody>
</table>
助けてください。
HTMLコードも表示できますか?観測可能な 'complete'がトリガされた場合、' this.showData() 'が呼び出されます。おそらく、あなたのケースでは、トリガされていないthats。また、あなたは 'showData()'で何をしていますか?そのコードも入れられますか? – Skeptor
@Skeptor - 自分のhtmlコードで質問を更新しました... this.showData()でも今すぐ、(トリガーされたかどうかを確認するために)メッセージを記録します。 –