2017-08-20 9 views
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

+0

あなたは約束を持っておらず、あなたは観察可能である。これはデータが到着したときに*発生するため、オブザーバブルへのコールバックの内部で動作します。先に進む前に、非同期とコールバックの基本についてお読みになることをお勧めします。これはグローバル変数でもありません。 – jonrsharpe

+0

件名の中でもう少し研究をする必要があることに同意しますが、** user **はグローバル変数ではありませんか?どうして?私は強力なJavaのバックグラウンドから来て、それはまるで世界的だと思われます。 –

+0

'afData'をログしてそこにあるものを見ることができますか? –

答えて

0

ユーザー変数の有効範囲はコンポーネントに限定されています。グローバルではありません。

関連する問題