angular - 从服务获取数据到组件订阅方法
问题描述
亲爱的,我是 Angular 新手并尝试理解。目前我在 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);
该服务的控制台日志为我提供了正确的输出,但是当我尝试访问组件中的该值时,我收到了错误“未定义”。
有没有人可以进一步帮助我?
解决方案
您的订阅无法使用,您需要将您的 observable 订阅到您的组件中。
如果您在服务中进行订阅,则您的方法将返回到您的组件,而无需等待订阅结果。
为了解决此问题,在服务中:
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);
}
推荐阅读
- powerquery - 读取 csv 的前 n 行而不在 Power Query 中解析整个文件
- c# - 不显示页面 403 - 禁止:发布到 IIS 时访问被拒绝
- r - 无法从 Github 安装 R 包
- github - 在带有 github 推送事件的代码构建中,git 显示 -s 错误消息致命:无法解析提交
- sql - 如何使用 Flink 1.9 LAST_VALUE?
- javascript - React Natvie 按钮和 textInput 不起作用
- bash - 是否有别名来引用终端中最后引用的文件?
- c - 当连接打开但没有数据发送时 send() 和 recv() 返回什么?
- javascript - 使用 jQuery 显示没有特定类的随机 div
- javascript - JS深度优先遍历预购