【问题标题】:How to extract Data from AngularFire2 Function如何从 AngularFire2 函数中提取数据
【发布时间】:2018-01-28 22:51:38
【问题描述】:

我正在尝试使用 AngularFire2 函数实例化一个变量。我的函数是authorizeUser(),但是当我尝试将该函数的结果分配给this.user 时,它在控制台窗口中返回为“未定义”。

import  { Component, OnInit } from '@angular/core';

import { AngularFire } from 'angularfire2';

import { SignupService } from '../../../services/signup/signup.service';

@Component({
  selector: 'console',
  templateUrl: './console.component.html',
  styleUrls: ['./console.component.css']
})

export class ConsoleComponent implements OnInit {

  signups: any;
  user : any;

  constructor(
    public af: AngularFire,
    private signupService: SignupService
  ) {}

  getSignupsList() {
    this.signupService.getSignups().subscribe(signups => {
      this.signups = signups;
    });
  }

  authorizeUser() {
    this.af.auth.subscribe( afData => {
      this.user = afData.auth.email;
      });
  }

  ngOnInit() {
    this.getSignupsList();
    this.authorizeUser();
    console.log(this.user);

  }

  login() {
    this.af.auth.login();
  }

}

但是,如果我在承诺中控制日志,我会得到我正在寻找的正确输出:

authorizeUser() {
    this.af.auth.subscribe( afData => {
      this.user = afData.auth.email;
      console.log(this.user);
      });
  }

我在这里缺少什么?我希望能够将afData.auth.email 的输出分配给一个全局变量:user

【问题讨论】:

  • 你没有promise,你有一个observable。它在可观察对象的回调中工作,因为当数据到达时发生。我建议在继续之前阅读异步和回调的基础知识。这也不是全局变量。
  • 我同意我需要在该主题内做更多的研究,但 user 不是全局变量?为何如此?我来自强大的 Java 背景,这似乎是全球性的。
  • 你能登录afData看看有什么吗?
  • 您使用的是哪个版本的AngularFire2?它似乎是一个旧版本。

标签: angular typescript firebase angularfire2


【解决方案1】:

用户变量的作用域是组件。它不是全球性的。

【讨论】:

    猜你喜欢
    • 2018-03-29
    • 2016-12-10
    • 2018-03-23
    • 2019-09-27
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多