首页 > 解决方案 > 引用组件链中的 ExpressionChangedAfterItHasBeenCheckedError

问题描述

ExpressionChangedAfterItHasBeenCheckedError在引用组件链中。

我有一项服务正在轮询数据REST API并将其存储在缓存中。几个组件使用#引用或@ViewChild在一个链中连接在一起。第一个组件是从服务中读取数据进行计算并将结果传递给下一个。计算的数据显示在每个组件中,让我控制计算是否正确。

我没有使用ngAfterViewInit. 但是ExpressionChangedAfterItHasBeenCheckedError在最后一个组件中得到一个。

它可以这样表示:

组件A(输出)-读取前一个组件的输出->组件B(输出)-读取前一个组件的输出->组件C(输出)-从服务读取数据->服务(缓存)<-从API轮询数据并放入缓存。

ListComponent.html:16 ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'input: -0.0006'. Current value: 'input: -0.0005943807529616154'.
    at viewDebugError (core.js:9817)
    at expressionChangedAfterItHasBeenCheckedError (core.js:9795)
    at checkBindingNoChanges (core.js:9962)
    at checkNoChangesNodeInline (core.js:14014)
    at checkNoChangesNode (core.js:13984)
    at debugCheckNoChangesNode (core.js:14813)
    at debugCheckDirectivesFn (core.js:14715)
    at Object.eval [as updateDirectives] (ListComponent.html:16)
    at Object.debugUpdateDirectives [as updateDirectives] (core.js:14697)
    at checkNoChangesView (core.js:13822)

标签: angular

解决方案


推荐阅读