Не удается вызвать предупреждение внутри функции в ионном 4 - PullRequest
0 голосов
/ 27 января 2019

Я не хочу вызывать оповещение внутри функции, которая реализует аутентификацию 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 (), он говорит ОШИБКА TypeError: Невозможно прочитать свойство 'errorAlert' из неопределенного .

Пожалуйста, помогите. Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 27 января 2019

Привет, попробуйте заменить функцию обратного вызова функцией стрелки, как:

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

Надеюсь, это поможет.

0 голосов
/ 27 января 2019

Когда вы используете function(error) {}, this представляет новую область.

вы должны использовать () => {}, поэтому она находится в той же области.

firebase.auth().signInWithEmailAndPassword(email, password).catch((error) => {
  // Handle Errors here.
  // const errorCode = error.code;
  const errorMessage = error.message;
  this.errorAlert(errorMessage);
});
0 голосов
/ 27 января 2019

Вам необходимо использовать arrow function, это автоматически связано правильно. Вы можете перемещать функции стрелок, если планируете поддерживать браузеры

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