2016-06-29 8 views
1

Я запускаю событие Angular 2, но подписанная функция не запускается.Угловая подписка на 2 события не работает

В одном файле у меня есть этот код, который подписаться на событие:

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); 
} 
} 

Код, который запускает событие выглядит следующим образом:

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

Это может произойти, если ваша подписка не будет установлена ​​до публикации вашего события.

Если вы переместите invokation of. listenToLoginEvents() Функция такая, что она вызывается перед публикацией, она будет работать. Возможные места для звонков может быть constructor или ngOnInit

Смежные вопросы