为什么我需要使用ChangeDetectionStrategy?

问题描述 投票:0回答:1

我正在使用 Ionic 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 警告:用户回调引发异常。错误:表达式在检查后发生了变化。先前值:“2017 年 4 月 10 日”。当前值:''。

因为,我通过在代码中添加这些行来实现此功能:

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

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

我安慰了聊天值。运行良好。但它并没有显示任何价值。

同时,当我返回后退按钮时,内容确实显示一秒。

如果我删除

ChangeDetectionStrategy

我再次收到此错误消息:

FIREBASE 警告:用户回调引发异常。错误:表达式在检查后发生了变化。先前值:“2017 年 4 月 10 日”。当前值:''。

为什么我需要使用

ChangeDetectionStrategy
? UI 值不显示。

angular ionic2 angular2-changedetection
1个回答
0
投票

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

this.msgdate="";
© www.soinside.com 2019 - 2024. All rights reserved.