Ioni c 4 Angular Сообщение AlertController не отображается в сборке выпуска - PullRequest
0 голосов
/ 29 мая 2020

Я создал небольшую службу оповещений (оболочку для Angular AlertController) в моем проекте Ioni c 4, она отлично работает, когда я просматриваю проект в «ioni c serve» (браузер), «ioni c cordova emulate »(на моем подключенном телефоне),« ioni c cordova build android »(установка APK-файла app-debug вручную на моем телефоне), однако, когда я создаю окончательную версию приложения с помощью« ioni c cordova build android --prod --release «сообщение» в предупреждении не отображается. Заголовок (заголовок) и кнопки отображаются и работают нормально, но сообщение не появляется.

Вот мой метод, который создает и отображает предупреждение:

   /**
 * "Confirm" with callback or "Cancel" alert
 */
async confirmOrCancelAlert(title, message, callback) {
    const alert = await this.alertController.create({
        header: title,
        message: message,
        buttons: [
            {
                text: 'Cancel',
                role: 'cancel',
                cssClass: 'secondary',
            }, {
                text: 'Confirm',
                handler: () => {
                    callback();
                }
            }
        ]
    });

    await alert.present();
}

Это код, который вызывал метод, показанный выше, который вызывается нажатием кнопки:

    /**
 * Answer questions button event click
 */
answerQuestions() {
    if (this.shift.getEarly() && (this.shift.getTimeToStart().asHours() > environment.alertTimes.answerQuestions)) {
        var timeTo = this.durationFormatPipe.transform(this.shift.getStart());
        var message = 'Your shift starts ' + timeTo + ', are you sure you want to answer questions now?';

        this.alertService.confirmOrCancelAlert('You are early!', message, () => {
            this.doAnswerQuestions();
        });
    } else {
        this.doAnswerQuestions();
    }
}

Вот два изображения, показывающие беспорядочные сообщения из сборки выпуска, но показанные в сборках serve / emulate / debug:

Release Build

Debug Build

Заранее большое спасибо за любой совет.

Ответы [ 2 ]

0 голосов
/ 03 июня 2020

попробуйте следующее:

async confirmOrCancelAlert(title, myMessage, callback) {
    const alert = await this.alertController.create({
        header: title,
        message: myMessage,
        buttons: [
            {
                text: 'Cancel',
                role: 'cancel',
                cssClass: 'secondary',
            }, {
                text: 'Confirm',
                handler: () => {
                    callback();
                }
            }
        ]
    });

    await alert.present();
}

измените имя на myMessage , чтобы оно отличалось от имени свойства. message: message вызовет проблему. Думаю, в прошлом году у меня была такая же проблема. проверьте и сообщите мне о результатах.

0 голосов
/ 30 мая 2020

Думаю, проблема в сроках. когда вы вызываете confirmOrCancelAlert (), timeTo еще не подготовлен. поэтому тип сообщения будет неопределенным.

попробуйте следующее:

    answerQuestions() {
        if (this.shift.getEarly() && (this.shift.getTimeToStart().asHours() > environment.alertTimes.answerQuestions)) {
            var timeTo = this.durationFormatPipe.transform(this.shift.getStart());
            var message = 'Your shift starts ' + timeTo + ', are you sure you want to answer questions now?';

            setTimeout(() => { 
                this.alertService.confirmOrCancelAlert('You are early!', message, () => {
                    this.doAnswerQuestions();
                });
            }, 50);

        } else {
            this.doAnswerQuestions();
        }
    }
...