this answer,とthis answerを読んだことがありますが、このエラーを修正する方法はわかりません。イオン2:エラーチェックした後に式が変化しました
基本的には、カウントダウンタイマーを秒単位で作成しています。各イベントには、残りの2回(1年、2か月、4日12時間、10分25秒)の最大のものが表示されます。
私は同じ機能を呼び出す多くのイベントを画面に表示しています。私は無作為にこのエラーError Expression has changed after it was checked
を表示します(何時に時間が数分で変化するか、時にはこのエラーが出ることもあります)。
<ion-header>
<ion-navbar>
<ion-title>
<h2>{{theTime}}</h2>
</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding-top padding-bottom>
<ion-fab right bottom>
<button ion-fab color="primary" (click)='goToEventUpsert()'>
<ion-icon name="add"></ion-icon>
</button>
</ion-fab>
<ion-card class="event" *ngFor="let event of events | OrderBy : 'dateTimeEpoch'" id="id-{{event.id}}">
<div class="event__container">
<div class="event__container__countdown" color="light" [innerHTML]="timeUntil(event.dateTime)"></div>
<div class="event__container__details">
...
</div>
</ion-card>
</ion-content>
そしてtypescriptですが、このような次のとおりです:私のHTMLはそうのように見える
ので
export class HomePage {
constructor(...) {
this.getCurrentTime();
setInterval(() => this.getCurrentTime(), 100);
}
getCurrentTime() {
this.theTime = moment().format("h:mm a");
}
timeUntil(date) {
var dur = moment.duration(moment(date).diff(moment()));
let yearsRemain = dur.years();
let monthsRemain = dur.months();
let daysRemain = dur.days();
let hoursRemain = dur.hours();
let minutesRemain = dur.minutes();
let secondsRemain = dur.seconds();
var dateArray = [
yearsRemain,
monthsRemain,
daysRemain,
hoursRemain,
minutesRemain,
secondsRemain
]
for(var i = 0; i < dateArray.length; i++) {
if(dateArray[i] > 0){
var firstDur = dateArray[i] + this.typeOfTime(i, dateArray[i]);
var secondDur = dateArray[i+1] !== 0 ? dateArray[i+1] + this.typeOfTime(i+1, dateArray[i+1]) : dateArray[i+2] + this.typeOfTime(i+2, dateArray[i+2]);
return firstDur + secondDur;
} else if(dateArray[i] < 0) {
return (dateArray[i] * (-1)) + this.typeOfTime(i, (dateArray[i] * (-1))) + " ago";
} else {
i++
}
}
}
typeOfTime(type, num) {
var display;
var plur = num === 1 ? "" : "s";
switch(type) {
case 0:
display = "Year" + plur;
break;
case 1:
display = "Month" + plur;
break;
case 2:
display = "Day" + plur;
break;
case 3:
display = "Hour" + plur;
break;
case 4:
display = "Minute" + plur;
break;
case 5:
display = "Second" + plur;
break;
}
return display;
}
}
私が言ったように、私は答えを読んで、私は理解していません。誰も私のためにこれについていくつかの光を当てることができますか?
開発モードの角度で作業しているときは、変数の状態をチェックするためにダブルチェックが行われます。違いを見るために本番ビルドを実行してみましょうが、この問題を解決するために絶えず変化しているコードを変更する必要があります。あなたの時間のように思える。 –
@camaron、私が言うことができる限り、それは私が理解しているものです。私は 'enableProdMode()'とそれをどこに置くべきかについては戸惑っていますが。 – ntgCleaner
アイデアは--prodフラグを使用することです。これはionic run android --prodのようにenableProdMode()を追加します。しかし、ブーストラップコールの前にmain.tsファイルにenableProdMode()を追加しようとすると、 –