0
AngularFire2関数を使用して変数をインスタンス化しようとしています。私の関数はauthorizeUser()
ですが、その関数の結果をthis.user
に代入しようとすると、コンソールウィンドウに「未定義」として返されます。AngularFire2関数からデータを抽出する方法
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);
});
}
を私はここで何をしないのですか? user
あなたは約束を持っておらず、あなたは観察可能である。これはデータが到着したときに*発生するため、オブザーバブルへのコールバックの内部で動作します。先に進む前に、非同期とコールバックの基本についてお読みになることをお勧めします。これはグローバル変数でもありません。 – jonrsharpe
件名の中でもう少し研究をする必要があることに同意しますが、** user **はグローバル変数ではありませんか?どうして?私は強力なJavaのバックグラウンドから来て、それはまるで世界的だと思われます。 –
'afData'をログしてそこにあるものを見ることができますか? –