【发布时间】: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