我具有以下功能来更改Firebase用户帐户上的电子邮件。我想在完成时显示ionic2警报,无论是成功还是发生错误。从下面的代码中,我确实得到了警告,但显示为空白。这很可能是Firebase承诺中的计时问题,但我不知道如何解决。
private doChangeEmail(data): void {
var myAlert: {
title?: string,
subtitle?: string
} = {};
this.auth.ref.changeEmail({
oldEmail: data.oldemail,
newEmail: data.newemail,
password: data.password
}, function(error) {
if (error) {
switch (error.code) {
case "INVALID_PASSWORD":
myAlert.title = 'Invalid Password';
myAlert.subtitle = 'The specified user account password is incorrect.';
break;
case "INVALID_USER":
myAlert.title = 'Invalid User';
myAlert.subtitle = 'The specified user account does not exist.';
break;
default:
myAlert.title = 'Error creating user';
myAlert.subtitle = error;
}
} else {
myAlert.title = 'DONE';
myAlert.subtitle = 'User email changed successfully!';
}
});
let alert = Alert.create({
title: myAlert.title,
subTitle: myAlert.subtitle,
buttons: [{
text: 'OK',
handler: () => {
}
}]
});
this.nav.present(alert);
}
我找到了Frank Van Puffelen的以下评论,该评论解决了我的问题:
您在this
回调函数内部使用它具有不同的含义。一种解决方案是对回调使用fat-arrow / rocket表示法,以确保这是您期望的:
正确的语法应该是
this.auth.ref.changeEmail({
oldEmail: data.oldemail,
newEmail: data.newemail,
password: data.password
}, (error) => {
if (error){
// do error stuff..
} else {
// do success stuff..
}
// show alert here...
})
而警报显示了Aaron Saunders指出的矫正
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句