Wie filter FirebaseListObservable auf der client-Seite?
Ich bin mit AngularFire2 innerhalb einer Eckigen web-app. Aufgrund der query-Einschränkungen der FB, ich kann nicht form einer Abfrage, liefert genau die Informationen, die ich brauche (zumindest nicht ohne größere änderungen an meinem schema).
So, ich möchte, um eine weitere client-Seite filter-Kriterien innerhalb von javascript (typescript). Wie mache ich das? Kann ich irgendwie einen filter hinzufügen-Funktion, um die beobachtbaren? Unten ist ein fragment, das veranschaulicht, was ich Tue.
In das HTML-Template für die Komponente, ich habe so etwas wie dies weiter unten. Die "jobs" - Variablen in der html-fragment ist eine FirebaseListObservable.
<tr *ngFor="let job of jobs | async">
.. fill in the table rows
Die Komponente-code sieht wie folgt aus:
//in the member declaration of the class
jobs : FirebaseListObservable<Job[]>;
...
//Notice in ngOnInit(), I'm filtering the jobs list using the the
//Firebase criteria. But I want to filter on an additional field.
//Firebase allows only single field criteria, so I'm looking for
//a way to apply an additional client-side filter to jobs to eliminate
//some additional records.
ngOnInit(){
this.jobs = this.af.database.list("/jobs/", {query: {orderByChild : "companyKey", equalTo:someKey}})
}
Gibt es eine Möglichkeit, eine filter-Komponente auf dieser.Arbeitsplätze", so dass ich eine lokale (client-Seite) filter?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief in das gleiche Problem. Das fehlende Stück war der filter das array selbst (
Job[]
), und nicht die Beobachtbaren wrapper um ihn herum (FirebaseListObservable<Job[]>
).War in der Lage, dies zu tun mit der RxJS Betreiber
map
.Wenn
job.price > price
true zurückgibt, dann ist es enthalten.Bemerkte auch Ihre
jobs
Eigenschaft war der TypFirebaseListObservable<Job>
ich hätte gedacht, dass die beobachtbaren Typ sollteJob[]
vsJob
.Ich habe nicht gefunden, einen Weg, um wirklich zu filtern, die auf das beobachten, aber ich habe einen workaround für einige Fälle. Kann man pseudo-filter in das element mit *ngFor. Also mein Beispiel wird
Hinzufügen wir fügen Sie die filter () - Methode auf unsere Komponente-code:
Ich bin noch auf der Suche nach einem Weg, um wirklich zu filtern, die auf das beobachtbare, aber für die Zwischenzeit, diese Problemumgehung verwendet werden.
schreiben Sie Ihre eigene Rohr
(ähnlich Filter auf Winkel-1.X)
verwenden Sie dann dieses Rohr-in-Komponente der Vorlage: