无法在ionic 4

时间:2019-01-27 11:14:44

标签: angular ionic-framework firebase-authentication ionic-native ionic4

我不会在实现Firebase身份验证的函数中调用警报。

我的打字稿代码(启用jQuery)

async emptyAlert() {
    const empty = await this.alertController.create({
      header: 'Error!',
      message: 'All fields are required. Please fill the details and try again',
      buttons: ['OK']
    });

    await empty.present();
  }
async errorAlert(message) {
    const errorAl = await this.alertController.create({
      header: 'Error!',
      message: message,
      buttons: ['OK']
    });
    await errorAl.present();
  }

  doLogin() {
    const email = $('#loginEmail').val();
    const password = $('#loginPassword').val();
    if (email === '' || password === '') {
      this.emptyAlert();
    } else {
      firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
        // Handle Errors here.
        // const errorCode = error.code;
        const errorMessage = error.message;
        this.errorAlert(errorMessage);
      });
    }
  }

请注意,上述代码是在constructor(public alertController: AlertController) { }内的export class LoginPage implements OnInit{…}之后实现的

我能够调用emptyAlert(),这是类似于errorAlert的警报,但是当我调用errorAlert()时,它说 ERROR TypeError:无法读取未定义的属性'errorAlert'。< / p>

请帮助。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

您需要使用 arrow function ,它会自动正确绑定。如果您计划在支持的浏览器上使用,可以转换箭头功能

firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
        // Handle Errors here.
        // const errorCode = error.code;
        const errorMessage = error.message;
        this.errorAlert(errorMessage);
});

答案 1 :(得分:0)

您好,尝试将您的回调函数替换为箭头函数,例如:

firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
        // Handle Errors here.
        // const errorCode = error.code;
        const errorMessage = error.message;
        this.errorAlert(errorMessage);
      });

希望有帮助。

答案 2 :(得分:0)

使用function(error) {}时,this代表新范围。

您应该使用() => {},所以它在同一范围内。

firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
  // Handle Errors here.
  // const errorCode = error.code;
  const errorMessage = error.message;
  this.errorAlert(errorMessage);
});