Angular - 检查后表达式已更改。以前的值

Angular - 检查后表达式已更改。以前的值

问题描述:

如果表达式的值发生更改,很少发生此错误,并且应用程序无法再响应。Angular - 检查后表达式已更改。以前的值

我在我看来这样的功能:{{generalService.timeFromNow(item.creation_time)}}

的呼叫:moment(timestamp, "X").fromNow()

随机,当时间从35到36变化,这个错误发生。 image

如果我有其他时间移动(滴答)分钟,不会引发错误。

这种错误发生在我的应用程序周围,我不想微观管理ngOnChanges,因为我认为Angular应该管理它。

+0

当您在angular2中使用enableprodmode时,此错误消失。否则,搜索在变化检测周期中更改值的项目。 – laser

+0

@laser但是有这个错误的理由是什么?为什么在变化检​​测过程中需要更改 – Amit

+1

我有一个例子来自我的经验:对于一个元素,我有一个指令[focusme] =“true”(事实证明是另一个元素)。当组件被分析并运行时,它为两个不同的输入提供了两个指令,并且首先将焦点更改为一个,然后更改为另一个输入,并报告了完全错误,并说渲染期间值发生了变化(通常不应该)。在发生这个错误后,我发现我的错误=) – laser

这是Angular2在开发模式中的一项功能,可帮助检测不良设计。有这个错误表明你可能不得不重新设计。

例如,假设您有两个具有此绑定的字段。像文字和图表。

{{generalService.timeFromNow(item.creation_time)}}

他们可以最终显示飘飞正式版不同的值,如果你不解决这个问题。这在您的正常测试中很难发现,只有一小部分用户会注意到它。

解决方案通常是将'timeFromNow'的结果存储在某个状态变量中,以便它不能更改更新周期。