In meiner Komponente verwende ich Daten, um die Daten von meinem Backend zu zeigen. Ich bin in der Lage, die Daten vom Backend zu erhalten (unter Verwendung eines Service), parse es erfolgreich und zeige die Daten in der Datentabelle an. Mein Problem ist jedoch, dass der Netzwerkanruf bei der ersten Wiedergabe meiner Komponente noch nicht abgeschlossen ist und daher die Tabelle mit "Keine Daten in der Tabelle verfügbar" ausgefüllt ist. Sobald der Netzwerkaufruf abgeschlossen ist, wird die Tabelle mit den Daten vom Server gefüllt, aber die Nachricht "Keine Daten in der Tabelle verfügbar" ist noch vorhanden.DataTable in Angular 2 neu rendern
Hier ist mein Netzwerk Anruf-Code -
fetchData(){
this.networkservice.getAllReceipts()
.subscribe(
res => {
this.itemList = res;
}, error => alert(error),
() => this.showData());
}
Ich rufe diese Methode in der ngOnInit(). Ich habe auch versucht, diese Methode innerhalb des Konstruktors sowie innerhalb ngAfterViewChecked() aufzurufen, aber keinen Erfolg.
Meine ShowData() -Methode wird nie aufgerufen.
In der Dokumentation von Datentabellen haben sie etwas namens renderder() erwähnt, das verwendet werden kann, um die Tabelle neu zu rendern, aber ich kann nicht herausfinden, wo ich es verwenden soll. Ich habe es in meine showData() -Methode platziert, aber es wird nie aufgerufen.
Ich habe auch "setTimeout" verwendet, um ein Timeout von 5 Sekunden zu setzen, aber selbst das scheint nicht zu funktionieren.
Mein HTML Code-
<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>
Bitte helfen.
Können Sie den HTML-Code auch anzeigen? 'this.showData()' wird aufgerufen, wenn das beobachtbare 'complete' ausgelöst wird. Wahrscheinlich wird das in Ihrem Fall nicht ausgelöst. Was machst du auch in 'showData()', kannst du diesen Code auch einfügen? – Skeptor
@Skeptor - Ich habe meine Frage mit meinem HTML-Code aktualisiert ... auch gerade in this.showData() protokolliere ich einfach eine Nachricht (um zu sehen, ob sie ausgelöst wurde). –