代码之家  ›  专栏  ›  技术社区  ›  Ashane Alvis

ExpressionChangedAfterItHasBeenCheckedError:检索Datepicker值时出现表达式错误

  •  0
  • Ashane Alvis  · 技术社区  · 6 年前

    angular 4 datepicker

    这是我的全部错误:

    检查之后。上一个值:“[对象]”。当前 值:''。

    这是我的html。

    <tr *ngFor="let rpr of DocumentMode">
    
    <td style="width: 18%">
    
    <my-date-picker name="from" [options]="DocDatePickerOptions" (dateChanged)="onDocDateChanged($event, rpr)" [ngModelOptions]="{standalone: true}" [placeholder]="placeholder"
                [ngModel]="rpr.SD_VALID_FROM" ></my-date-picker>
    </td>
    <tr>
    

    下面是我如何绑定和获取datepicker的值。在sample.ts中

    OnInit(){
    
      this.DocDateRetreive();
    }
    
    
    
    DocDateRetreive() {
        console.log("came here", this.DocumentMode);
        for (var i = 0; i < this.DocumentMode.length; i++) {
          if (this.DocumentMode[i].SD_VALID_FROM == null) {
            // this.validFrom[i] = new Date();
          }
          else {
            console.log("from:", this.DocumentMode[i].SD_VALID_FROM);
    
            var validFromTemp = [new Date(this.DocumentMode[i].SD_VALID_FROM)];
    
            for (var j = 0; j < validFromTemp.length; j++) {
              console.log("valid from temp:", validFromTemp[j]);
              this.validFrom[i] = { date: { year: validFromTemp[j].getFullYear(), month: validFromTemp[j].getMonth() + 1, day: validFromTemp[j].getDate() } };
            }
            console.log("valid", this.validFrom[i]);
            this.DocumentMode[i].SD_VALID_FROM = this.validFrom[i];
          }
        }
      }
    
    
      onDocDateChanged(event: IMyDateModel, rpr) {
    
          var date = event.formatted;
          rpr.SD_VALID_FROM = date;
          console.log("changed", rpr.SD_VALID_FROM);
    
      }
    
    
    readThis(inputValue: any, rpr): void {
    
          myReader.onloadend = (e) => {
            this.FileString = myReader.result;
            // rpr.SD_VALID_FROM = this.validFrom.formatted;
            for (var i = 0; i < this.DocumentMode.length; i++) {
              if (this.DocumentMode[i].DOC_ATTCHE_PATH == rpr.DOC_ATTCHE_PATH) {
    
                this.DocumentMode[i].SD_VALID_FROM = rpr.SD_VALID_FROM.formatted;
                this.DocumentMode[i].SD_VALID_UNTIL = rpr.SD_VALID_UNTIL;
                this.DocumentMode[i].IS_CHECK = true;
              }
            }
          }
          myReader.readAsDataURL(file);
    
      }
    

    日期选择器工作正常,但当它第一次加载DOM时,会发生错误。我该如何解决这个问题。我们将非常感谢您的帮助。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Jins Peter    6 年前

    试着做这个 this.DocDateRetreive(); 视图初始化后。

    export class YourComponent implements AfterViewInit{
    constructor(){
    /*Whatever*/
    }
    
        ngAfterViewInit(): void{
        this.DocDateRetreive();
        }
    }
    

    这应该能解决你的问题。

    如果你使用的输入数据造成了问题,那么你需要去寻找 后内容初始化

    export class YourComponent implements AfterContentInit {
        constructor(){
        /*Whatever*/
        }
    
            ngAfterContentInit (): void{
            this.DocDateRetreive();
            }
        }