2017-05-17 5 views
1

Ich versuche eine unendliche Scroll in Angular 2 zu implementieren und Daten von firebase abzurufen. Ich verwende eine beobachtbare aber das wird alle Datensätze zu bringen ich in der Datenbank haben, denn es ist der Codeangularfire2 infinite scroll implementation

getUsers(): Observable<any> { 
    return this.http.get(`${baseUrl}.json`).map((res: Response) => { 
    this.data = res.json(); 
    return this.data; 
    }); 
} 

zur Herstellung der Daten in chuncks bringen Ich habe versucht, eine der Angular-1-Implementierungen aus dem Link

https://stackoverflow.com/a/40634381/5290012

und auch versucht, die Umsetzung

https://medium.com/@Sureshkumar_Ash/angular-2-simple-infinite-scroller-directive-with-rxjs-observables-a989b12d4fb1

usin g gibt entweder Fehler aus, die besagen, dass die Eigenschaften nicht existieren auf der

Die Eigenschaft 'orderByChild' existiert nicht auf den Typ 'Observable'.

bitte vorschlagen, wie ich

+0

Möchten Sie angularfire2 verwenden? Weil das, was du machst, anglefire2 überhaupt nicht nutzt. Ich würde zum [angularfire2 repo] (https://github.com/angular/angularfire2) gehen und den Dokumenten folgen. orderByChild ist nur in AngularFireDatabase-Listen verfügbar. –

+0

@ J.AdamConnor Vielen Dank, Sie haben Recht, meine Implementierung war falsch. – Vijay

+0

Ja, Sie müssen Ihre Ergebnisse mit der Abfragefunktion paginieren und den endAt-Wert dynamisch ändern, während Sie scrollen. Etwas in dieser Richtung .... –

Antwort

1

konnte ich dies implementieren durch Aufteilung der Funktion in zwei nähern müssen zu beginnen, und die addItems() Funktion jedes Mal aufgerufen wird, die Rolle des den Boden erreicht die Seite, die zusätzliche Daten abruft.

getUsers(): Observable<any> { 
    return this.fb.list('/items', { 
     query: { 
     orderByChild: 'pnr_id', 
     limitToFirst: 200, 
     } 
    }); 
    } 

    addItems(newStart) { 
    console.log(newStart); 
     return this.fb.list('/items', { 
     query: { 
      orderByChild: 'pnr_id', 
      startAt: newStart, 
      endAt: newStart + 200, 
     } 
     }); 
    }; 

Das funktioniert jetzt einwandfrei für mich.

Verwandte Themen