亲爱的我是新手,请尝试一下。目前,我在Firebase中有一些列表,这些列表是我在组件中需要的。我在服务文件中收到了它们。
服务:
businessRef: AngularFireList<any>;
business$: Observable<any[]>;
businessData: any[];
constructor(private db: AngularFireDatabase,private router: Router) {
}
getAllData(){
this.businessRef = this.db.list('/types/business');
this.business$ = this.businessRef.valueChanges();
this.business$.subscribe(businessData=> {
this.businessData = businessData;
console.log(this.businessData);
});
}
组件:
constructor(public db: AngularFireDatabase, public questionSerivce: QuestionService) {
}
this.businessDateGraph = this.questionSerivce.getAllData();
console.log(this.businessDateGraph);
该服务的控制台日志为我提供了正确的输出,但是当我尝试访问组件中的值时,我收到了错误“未定义”。
有人可以进一步帮助我吗?
答案 0 :(得分:1)
您的订阅无法使用,您需要将可观察对象订阅到您的组件中。
如果在服务中进行订阅,则方法将返回到组件,而无需等待订阅结果。
为了解决此问题,请在使用中
:getAllData(){
this.businessRef = this.db.list('/types/business');
this.business$ = this.businessRef.valueChanges();
return this.business$;
}
在您的组件中:
public allData :any[];
getAllData()
{
this.questionSerivce.getAllData().subscribe(res => this.allData = res);
}