Ionic如何修复“ExpressionChangedAfterItHasBeenCheckedError”错误?

时间:2017-10-19 09:35:26

标签: html angular typescript ionic-framework

// HTML

    <span style="margin-left:43%;background-color:rgb(229,229,229);border-
    radius:10%">&nbsp;&nbsp;{{formatEpoch(epoch)}}&nbsp;&nbsp;</span>

// TS

lastdate:any;                    

 formatEpoch(epoch): string {
    if(epoch == this.lastdate){
        return '';
    }else{ 
    this.lastdate =epoch;
    return UtilService.getCalendarDay(epoch);
    }
  }

ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后发生了变化。上一个值:'今天下午5:34'。当前价值:''。

我该如何解决此错误?请帮忙。

3 个答案:

答案 0 :(得分:1)

如果喜欢角度,请尝试使用

this._changeDetectionRef.detectChanges();

在您的方法结束时,不要忘记添加

private _changeDetectionRef : ChangeDetectorRef

作为拥有方法的Component的构造函数的参数。

参见discution here

答案 1 :(得分:0)

你能试试吗

lastdate:any;                    
formatEpoch(epoch): string {
   setTimeout(()=> {
     if(epoch == this.lastdate){
        return '';
     }else{ 
       this.lastdate =epoch;
       return UtilService.getCalendarDay(epoch);
     }
   }, 100);
}

答案 2 :(得分:0)

最佳解决方案:

  import { Platform } from '@ionic/angular';

  // ...

  constructor(
    ...
    private _platform:Platform
  ) { }

  ngOnInit() {
    this._platform.ready().then(() => {
      this.formatEpoch()
    })
  }