2016-06-29 9 views
1

角2イベントを発生させていますが、サブスクライブされている機能が動作していません。これが発生する可能性が角2イベントサブスクリプションが機能しない

resetPassword(email) { 
var ref = new Firebase(this.firebaseUrl); 
ref.resetPassword({ 
    email: email 
}, (error) => { 
    var errMessage = ''; 
    if (error) { 

    switch (error.code) { 
     case "INVALID_USER": 
     errMessage = "Could not find an account with that email address."; 
     break; 
     default: 
     errMessage = "There was an error resetting your password."; 
    } 
    this.events.publish('user:resetPasswordFailed', errMessage); 
    alert('Sent resetpasswordfailed event'); 
    } else { 
    this.events.publish('user:resetPassword', "You have just been sent a password reset email."); 
    } 
}); 

}

+2

です。イベントが公開される前に購読が設定されていないようです。あなたがlistenToLoginEvents関数を呼び出している場所から –

+0

それはそれでした! –

+0

これを回答として追加しました –

答えて

1

場合:イベントが発生したコードは次のようになり

listenToLoginEvents() { 

this.events.subscribe('user:login',() => { 
    this.loading.dismiss(); 
    this.nav.setRoot(VeeUPage); 
}); 

this.events.subscribe('user:loginFailed', (error) => { 
    this.loading.dismiss(); 
    this.showAlert("Login Error", error); 
}); 

this.events.subscribe('user:resetPassword', (result) => { 
    this.showAlert("Forgotten Password", result); 
}); 

this.events.subscribe('user:resetPasswordFailed', (error) => { 
    this.showAlert("Forgotten Password", error); 
}); 
} 

showAlert(title, subtitle) { 
let alert = Alert.create({ 
    title: title, 
    subTitle: subtitle, 
    buttons: ['Ok'] 
}); 
this.nav.present(alert); 
} 
} 

:私はイベントをサブスクライブこのコードを持って一つのファイルに

イベントが公開される前に購読が設定されていません。

あなたの召喚を移動した場合。 listenToLoginEvents()公開する前に呼び出されるような機能は動作します。 これを呼び出す可能性のある場所はconstructorまたはngOnInit

関連する問題