Ionic 4 - AlertController: свойство 'присутствует' не существует - угловое? - PullRequest
0 голосов
/ 16 января 2019

Я устанавливаю новое оповещение в Ionic 4 - пустой тип: угловой проект. Это базовое предупреждение, но я получил ошибку при запуске моего проекта.

Error

Свойство «присутствует» не существует для типа «Обещание». Вы забыли использовать «ожидание»?

Можно создать тот же код, что и в документации. Ссылки: https://ionicframework.com/docs/api/components/alert/AlertController/

Мой код:

import { AuthenticationService } from './../../services/authentication.service';
import { Component, OnInit } from '@angular/core';
import { AlertController, LoadingController, NavController } from 
'@ionic/angular';

@Component({
  selector: 'app-register',
  templateUrl: './register.page.html',
  styleUrls: ['./register.page.scss'],
})
export class RegisterPage implements OnInit {
  createSuccess = false;
  registerCredentials = { email: '', password: '' };

 constructor(
   private nav: NavController,
   private auth: AuthenticationService,
   private alertCtrl: AlertController) { }

 ngOnInit() {
 }

 presentAlert() {
    const alert = this.alertCtrl.create({
    message: 'Low battery',
    subHeader: '10% of battery remaining',
    buttons: ['Dismiss']
   });
   alert.present(); <--- error Property 'present' does not exist on type 'Promise<HTMLIonAlertElement>'. Did you forget to use 'await'?
}
public register() {
this.auth.register(this.registerCredentials).subscribe(success => {
  if (success) {
    this.createSuccess = true;
    this.showPopup('Success', 'Account created.');
  } else {
    this.showPopup('Error', 'Problem creating account.');
  }
},
  error => {
    this.showPopup('Error', error);
  });
}

Функция showPopup, которая должна работать ..

showPopup(title, text) {
let alert = this.alertCtrl.create({
  message: title,
  subHeader: text,
  buttons: [
    {
      text: 'OK'
    }
  ]
});
alert.present(); <-- the same error
}

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Так как метод создания контроллера оповещений возвращает обещание, поэтому вы не можете использовать данный метод напрямую. То, что вам нужно сделать, это «использовать тогда» и вызвать текущий метод, как показано ниже -

presentAlert() {
  const alert = this.alertCtrl.create({
  message: 'Low battery',
  subHeader: '10% of battery remaining',
  buttons: ['Dismiss']}).then(alert=> alert.present());
}

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

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

Используемая вами документация относится к ionic 3 Поскольку вы используете Ionic 4 , вам необходимо обратиться к текущим документам Ionic 4 и this .

this.alertController.create({...})

возвращает обещание объекта с указанием ошибки.

Ваш код должен быть:

 async presentAlert() {
    const alert = await this.alertCtrl.create({
    message: 'Low battery',
    subHeader: '10% of battery remaining',
    buttons: ['Dismiss']
   });
   await alert.present(); 
}
...