2016-05-03 60 views
0

我有以下功能可更改Firebase用户帐户中的电子邮件。我想在完成时显示ionic2警报,无论它是否成功或出现错误。从我的代码下面我得到警报显示,但它是空白的。很可能这是Firebase承诺中的时间问题,但我不知道如何解决此问题。如何在Firebase更改后显示ionic2警报电子邮件

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

回答

0

我发现弗兰克面包车Puffelen这解决了我的问题如下评论:

您使用this在回调函数内部,它具有不同的含义。一个解决方案是使用脂肪箭头/火箭符号回调,从而确保这是你希望它是什么:

正确的语法应该是

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

和警报显示correclty尖的由亚伦桑德斯

0

把报警代码的承诺,结果里面....

this.auth.ref.changeEmail({ 
    oldEmail: data.oldemail, 
    newEmail: data.newemail, 
    password: data.password 
}, function(error) { 
    if (error){ 
    // do error stuff.. 
    } else { 
    // do success stuff.. 
    } 
    // show alert here... 
}) 
+0

我已经尝试过,但我得到'EXCEPTION:TypeError:无法读取属性'导航'未定义' –

+0

在我的代码示例上面的警报DOES显示,但是空白 –

相关问题