我正在使用带有angularfire2的firestore云,我试图访问单个文档的数据以显示到我的模板中,数据仅在订阅方法中可用。
这是我获取文档的服务中的方法
getDataDetails(id: any) {
this.dataDocumment = this.afs.doc('data/' + id);
return this.dataDocumment.valueChanges();
}
和我的ngOnInit组件方法
ngOnInit() {
this.id = this.route.snapshot.params['id'];
this.dataD = this.dataService.getDataDetails(this.id)
.subscribe(
res => {
this.dataD = res;
console.log(this.dataD);
});
console.log(this.dataD);
}
订阅范围内的第一个console.log(this.dataD)
成功显示文档数据
{adresse: "Rue de France #10", bureau: "78", centre: "Lycée Français", cin: "751-02-785-782-002", commune: "Paris", …}
但第二个显示
Subscriber {closed: false, _parent: null, _parents: null, _subscriptions: Array(1), syncErrorValue: null, …}
如何解决这个问题?
答案 0 :(得分:0)
您正在尝试访问同步上下文之外的变量 订阅一个observable时,你正在进行异步操作 操作和console.log是一个同步的文本所以由 你在console.log中访问变量的时间还没有 由于订阅处于异步上下文中而填充
您可以做的是尝试在订阅调用本身中执行与该变量相关的所有操作