错误:ExpressionChangedAfterItHasBeenCheckedError

时间:2017-06-29 04:42:22

标签: html css angular

我在主要组件的[height]上遇到以下错误并寻找解决方案

  

错误:ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后发生了变化。先前价值:'753'。当前价值:'731'。

我有三个组件需要在固定大小的面板中呈现。

根据屏幕中呈现的顶部组件和底部组件的数量,应更改主要组件大小(高度)。

我找到的唯一解决方案是使用offsetHeight,但是会在角度上抛出错误。

我知道我可以使用jQuery或Javascript解决这个问题吗?但是寻找纯粹的Angular解决方案。

  <div #panelbody>
    <div #top>
      <top *ngFor="let top of tops; let i = index" [index]="i"></top>
    </div>
    <main [height]="panelbody.offsetHeight - top.offsetHeight - bottom.offsetHeight - 10"></main>
    <div #bottom class="text-center">
      <bottom *ngFor="let bottom of bottoms(); let i = index" [index]="i">
      </bottom>
    </div>
  </div>

1 个答案:

答案 0 :(得分:0)

似乎此错误仅在开发模式下弹出,而不是在生产模式下弹出。但是错误意味着在更改检测周期之后,绑定[height]属性发生了一些变化,这些变化直到下一个变化检测周期发生时才会反映出来。请参阅此issue on github