2017-12-08 2 views
0

Die App, die ich entwickeln möchte, ermöglicht die Auswahl der Sprache mit einem Eingabefeld Material2 Select. Die verfügbaren Sprachen werden in einer Firestore-Dokumentensammlung gespeichert. Ich verwende eine AngularFirestoreCollection, um sie abzurufen, kann aber nicht herausfinden, wie die Sprachnamen aus dem Ergebnis extrahiert und in ein Array eingefügt werden.So extrahieren Sie das Ergebnis einer AngularFirestoreCollection in ein Array

Ich habe für Beispiele und Tutorials gegoogelt, Seiten der Dokumentation gelesen und wieder gelesen und viele Beispiele mit '* ngFor' gefunden, aber ich kann keine mit 'map' finden, von denen ich vermute, dass ich sie verwenden muss.

Vielen Dank im Voraus.

languageid: string; 
    languageName: string; 
    languageCollection: AngularFirestoreCollection<any> = this.afs.collection('Countries/AU/cLanguage'); 
    languagecollection = this.languageCollection.valueChanges(); 
    languages: string[]; 

Ich möchte Karte "languagecollection = this.languageCollection.valueChanges();" zu einem Array.

+0

buchen Sie den Code, den Sie versucht. – Hareesh

+0

Es hat so lange gedauert, bis ich antwortete, aber ich bin auf der anderen Seite der Welt. Sprachid: Zeichenfolge; spracheName: string; languageCollection: AngularFirestoreCollection = this.afs.collection ('Länder/AU/cLanguage'); languagescollection = this.languageCollection.valueChanges(); Sprachen: string []; // Ich brauche => map (mappedData) –

Antwort

0

denke ich, Sie so etwas wie versuchen: (. Ungetestet Kommentar, wenn es falsch ist)

let languages: string[]; 
let collection = this.afs.collection('Countries/AU/cLanguage').valueChanges(); 

//if you want to Firebase's .once(), use take(1) 
let storeTask = collection.subscribe((langs) => { 
    languages = langs; 

    //Or 
    /*Object.keys(langs).map(function(key, index) { 
     languages.push(langs[key].name) 
    });*/ 
}); 
+0

Ich erhalte einen Fehler bei take (1): "[ts] Eigenschaft 'take' existiert nicht beim Typ 'Observable <{}[]>'. –

+0

Ich denke' take (1) 'funktioniert in die neueste Version, aber Sie können sie entfernen und die Echtzeit-Visualisierung nutzen. – Makah

0

Ich habe diesen Code tat, was ich

benötigt
querySnapshot.forEach(function (doc) { 
    let name = doc.data()['languageName']; 
    lang.push(name); 
    }); 
}); 
Verwandte Themen