【发布时间】:2017-07-26 09:22:34
【问题描述】:
我在我的服务函数中异步从 Firebase 检索我的数据,我想在我的组件中检索它们。
我的数据库中有数据,该函数很好地返回了我的数据,但我无法在 home.ts 中检索它们(数组为空)。
todolistService.ts:
import {Injectable} from '@angular/core';
import {AngularFireDatabase, FirebaseListObservable} from 'angularfire2/database';
import * as moment from 'moment';
import 'rxjs/add/operator/map';
import {Observable} from "rxjs/Observable";
@Injectable()
export class TodolistService {
statuts: Array<any> = [];
dateOfTheDay: string;
constructor(public afDB: AngularFireDatabase) {
moment.locale('fr');
this.dateOfTheDay = moment().format('L'); // Date au format : 04/07/2017
}
/**
*
* @returns {Observable<Array<any>>}
*/
statusToShow():Observable<Array<any>> {
let localStatuts: Array<any> = [];
return this.afDB.list('/statut').map(status => {
for (let s of status) {
if (this.dateOfTheDay === s.statut_date_tache) {
if (s.statut_id_tache in this.statuts === false) {
localStatuts[s.statut_id_tache] = s;
console.log('=== STATUSTOSHOW ===');
console.log(localStatuts);
return localStatuts;
}
}
}
});
}
}
home.ts:
import {Component} from '@angular/core';
import {ModalController, NavController} from 'ionic-angular';
import {TodolistService} from "../../providers/todolistService";
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
public statusOfTheDay: Array<any> = [];
constructor(public navCtrl: NavController, public modalCtrl: ModalController, public todolistService: TodolistService) {
}
ionViewDidLoad() {
this.todolistService.statusToShow().subscribe(status => this.statusOfTheDay = status);
console.log('=== HOME ===');
console.log(this.statusOfTheDay);
}
}
我不知道我的问题来自哪里..“=== HOME ===”首先出现在控制台中是否正常?
提前感谢您的帮助,感谢@AJT_82。
【问题讨论】:
-
那么您是在问如何返回 ID 尚未存储在
statuts中且日期匹配的任何对象? -
我希望在我的组件 home.ts 中得到与返回 "=== STATUSTOSHOW ===" 相同的结果,因为它是空的,我不明白为什么
-
我想是因为你的地图用错了——我现在试着写一个答案
-
console.log(this.statusOfTheDay);在订阅中使用它
-
谢谢。但是为什么问题会出在地图上呢?因为我的函数返回的结果是正确的,只是在home.ts中我没有取回数据
标签: angular typescript asynchronous ionic-framework