角度2"表达在检查后发生了变化"

时间:2016-06-17 14:57:32

标签: angular momentjs

我在我的应用中使用了片刻,它显示了" X分钟前"用这种方式标记:

{{comment.created_at | amTimeAgo}}

分钟数自动更新(1分钟后将是X-1 Miuntes前和#34;

当我离开应用时,我试图访问它但是我收到以下错误:

platform-browser.umd.js:962 ORIGINAL EXCEPTION: Expression has changed after it was checked. Previous value: '8 Minutes ago'. Current value: '9 Minutes ago'

我通过API从方法中读取数据(日期)一次。

searchPeople(name)
{
    this.loading = true;
    this.http.get(this.BASE_URL + 'mode=search&name='+name)
      .map((res:Response) => res.json())
      .subscribe(
        data => {       
            this.loading = false;
            this.people = data;
            this.searchedName = name;
        },
        error => {
          console.log(error.text());
        }
      );
}

我如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

问题是由管道amTimeAgo引起的,为同一输入返回不同的输出。显然,您将comment.create_atDate.now()进行比较,并且随着时间的推移会产生不同的输出。

这是一个不纯的管道,您需要通过设置pure: false告诉Angular:

@Pipe({ 
  name: 'amTimeAgo',
  pure: false
})
class AmTimeAgoPipe {
  ...
}