私はこれに夢中になっているので、私は聴衆に提出します。Angularfire2からの価値を引き戻す
Observableを返す必要があります。 最初にFirestoreを呼び出して配列を含むフィールドを取得し、配列の各値に基づいて一致するキーを取得したいとします。通常はかなり簡単です。
私はコンソールで何が起こっているのか正確に分かるので、データはここにありますが、なぜ彼らは決してビューに表示されません。私があきらめる前に、私は以下の無数のバリエーションを作った。
マイ・サービス - 提案が反映されるように編集されました。それでもコンストラクタで public agendaData: Observable<any>
[マイコンポーネント
getUserActivites() {
console.log(this.userId)
let array = []
const agenda = this.afs.doc(`users/${this.userId}`).snapshotChanges()
agenda.subscribe(list => {
const data = list.payload.data().activities
data.map(event => {
const id = event
const dataRef = this.afs.doc(`activities/${event}`).valueChanges()
dataRef.subscribe(date => {
array.push(date)
console.log(array) //array log the expected data in an array of Object
return data
})
})
})
return agenda
}
を働いていない
this.agendaData = this.agenda.getUserActivites()
マイビュー
<div *ngFor="let item of agendaData | async ">
{{ item.name }}
</div>
こんにちは@Benoit。私は理解しているか分からない。あなたの問題は、アイテムの 'key'を表示できないということですか?またはすべてのデータ(例: 'item.name')?ファイアストアにはキーがないので、ファイアストアにはキーがありません。マップするには[snapshotChanges()メソッド](https://github.com/angular/angularfire2/blob/master/docs/firestore/collections.md#snapshotchanges)を使用して配列にインクルードする必要があります。 – Will
私の問題は、データをまったく表示できないことです。このシナリオでは、キーは必要ありません。私はちょうど選択されたドキュメントのリストを取得したい。選択は 'list.payload.data()。activities'にホストされているキーに基づいて行われます – Benoit
あなたの問題は、あなたがサブスクリプションからデータを返そうとしていることです。これはうまくいきません:) https://stackoverflow.com/question/39295854/angular-2-how-to-return-data-from-subscribe – Alex