Tach!
hm... angenommen das Datenarray kennt nur die Daten von Page 1 und der Anwender klickt auf Page 3 ohne auf page 2 geklickt zu haben, dann müsste ich mir die Daten von Page 3 holen und itemsPerPage viele Elemente vom Array befüllen, oder geht das besser?
Vorweg: ich kenne mich mit Angular nicht aus. Aber in React würde man das so lösen, dass man nicht an das Array anhängt, sondern dass man das Array überschreibt mit den Daten von Seite 3, so dass nur Seite 3 angezeigt wird. Das kann man in Angular sicher ähnlich lösen.
Ja, wobei man hier auch beachten muss, wie es die Komponenten von ngx-pagination gerne hätten. Man hat als Datenauflistung sowas wie:
<ul>
<li *ngFor="let item of collection | paginate: { itemsPerPage: 10, currentPage: p, totalItems: ti }"> ... </li>
</ul>
Das heißt, in collection sind (nur) die Daten der aktuellen Seite, wenn man Server-Side Paging betreibt und totalItems
setzt. Dieser Variable (sprich: Eigenschaft der Component) muss man einen neuen Wert (ein neu erzeugtes Array) zuweisen, damit die Change Detection die Änderung mitbekommt. Daten in dem bestehenden Array lediglich zu verändern ergibt keine erneute Ausgabe, weil die Referenz des Arrays geprüft wird und nicht dessen Inhalt.
Das
fetch
-Result von Seite 1 würde man dann entweder in einem Caching-Layer cachen oder neu abrufen, wenn der User zu dieser Seite zurück kehrt. Oder beides: erst den gecachten Zustand anzeigen und wenn dasfetch
-Result da ist dieses anzeigen.
Vielleicht, vielleicht auch nicht. Kommt darauf an, wie aktuell die Daten sein sollen und wie schnell sie sich serverseitig ändern.
dedlfix.