2017-05-01 9 views
0

私はフォームの登録ページを持っています。ユーザは、コンポーネント内のレジスタ機能に行くレジスタボタンをクリックする。コンポーネントのregister関数は、authService.registerとauthService.verifyUserの2つの呼び出しを行います。角度サービスクラスのプロパティは、関数内で何かを設定しようとすると、未定義です

登録が正常に動作しています。しかし、verifyUserでは、何かを設定しようとするとクラスプロパティ(this.loggedInUserとthis.userLoggedIn)が定義されていないというエラーが表示され続けます。スコープに何かが混乱しているようですが、どの機能からでもいつでもクラスプロパティを設定できないのはなぜですか?

export class AuthService { 
    userLoggedIn: boolean = false; 
    loggedInUser: string; 

    constructor(private router: Router) {} 

    register(email: string, password: string) { 
    firebase.auth().createUserWithEmailAndPassword(email, password) 
     .catch(function (error) { 
     alert(`${error.message} Please Try Again!`); 
     }); 
    } 

    verifyUser() { 
    firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
     // User is signed in. 
     this.loggedInUser = user.email; 
     this.userLoggedIn = true; 
     this.router.navigate(['']); 
    } else { 
     // No user is signed in. 
    } 
    }); 
    } 
} 

答えて

1

これは働いていた

var me = this; 
firebase.auth()....{ 
me.loggedIn.... 
} 
+0

を行い、できるだけ早くそれは私をすることができますとして受け入れとしてマークします。これは一般的なタイスクリプトのものですか?それはあなたがこれにアクセスできない約束の中/観察可能なものであるからですか? –

+0

はい、この値は成功関数内では異なります。 – Rhea

関連する問題