Angular无法访问subscibe方法之外的数据

时间:2018-01-15 15:35:29

标签: angular google-cloud-firestore angular-services

我正在使用带有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, …}

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

  

您正在尝试访问同步上下文之外的变量   订阅一个observable时,你正在进行异步操作   操作和console.log是一个同步的文本所以由   你在console.log中访问变量的时间还没有   由于订阅处于异步上下文中而填充

您可以做的是尝试在订阅调用本身中执行与该变量相关的所有操作