【问题标题】:ChangeDetectionStrategy not wrk properlyChangeDetectionStrategy 无法正常工作
【发布时间】:2017-04-20 12:00:23
【问题描述】:

我正在使用离子 2

这是我的代码:

<div class="messagesholder" 
      *ngFor="let chat of chatval | orderby:'[date]'; let i = index;let first=first;let last = last;">
           {{last ? callFunction() : ''}} 

       <div *ngIf="chat.sender == currentuser || chat.receiver == currentuser" >
       {{checkdate(chat.date)}} 
       <p class="chat-date"  id="abc" #abc>{{msgdate | amDateFormat:'LL'}}</p>

     </div> 

这是我的checkdate 函数:

checkdate(date)
  {
    var res = date.split(" ");
    var A=res[0];
    var local=localStorage.getItem('chatdate');
    this.msgdate="";
    if(local === undefined || local === null)
    {
      this.msgdate=A;
      localStorage.setItem('chatdate',this.msgdate);

    }
    else if(local !== undefined)
    {
      console.log(local != A);
      if(local != A)
      {

        this.msgdate = A;
         localStorage.setItem('chatdate',this.msgdate);
      }
    }

   }

    callFunction(){
    this.content.scrollToBottom(0)
  }

这是工作。但是我收到了这个错误。

FIREBASE WARNING: Exception was thrown by user callback. Error: Expression has changed after it was checked. Previous value: 'April 10, 2017'. Current value: ''.

因为我通过在我的代码中包含这些行来完成这项工作:

import {  Component, ChangeDetectionStrategy } from '@angular/core';
@Component({
  changeDetection: ChangeDetectionStrategy.OnPush,
  selector: 'page-chat',
  templateUrl: 'chat.html',
  
})

现在。我没有收到错误消息。但内容不显示。

我安慰了chatval。它很好。但它没有显示任何价值。

在我去后退按钮的同时,内容显示一秒。

如果我删除ChangeDetectionStrategy

我再次收到此错误消息

FIREBASE WARNING: Exception was thrown by user callback. Error: Expression has changed after it was checked. Previous value: 'April 10, 2017'. Current value: ''.

为什么使用ChangeDetectionStrategy? UI 值不显示。

【问题讨论】:

    标签: angular ionic2 angular2-changedetection


    【解决方案1】:

    说真的,您正在修改模型经过检查后的状态。如果没有绑定到变量,您不应该这样做。删除

    this.msgdate="";
    

    【讨论】:

    • 我也使用 changeDetectorRef.markForCheck();但还是不行。
    • 只有在更改检测器检查到变量之前找到更改变量的其他方法后,该错误才会消失。这就是为什么我建议绑定变量,以便一旦组件更改它,它就会获得模型的更新值。
    • 你能帮我吗...?
    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 2016-09-01
    • 2012-07-11
    • 2018-04-08
    • 2017-04-20
    • 2018-10-02
    • 2016-09-04
    • 2010-10-06
    相关资源
    最近更新 更多