由于添加了滚动条,Angular 2表达式在检查错误后已更改

由于添加了滚动条,Angular 2表达式在检查错误后已更改,angular,typescript,Angular,Typescript,我有一个getter函数,它返回组件部分的offsetWidth。在某个点上,页面填充了触发滚动条以添加到页面的元素。添加滚动条会将页面的布局更改几个像素,并更改我的组件的宽度,该组件在CSS中设置为width:100%。布局更改显然发生在更改检测周期内 问题是,我的getter函数然后返回一个不同的值,因为它的宽度确实随着页面布局的更改而更改,并触发ExpressionChangedTerithasBeenCheckedError 以下是我的功能: get width() { retu

我有一个getter函数,它返回组件部分的offsetWidth。在某个点上,页面填充了触发滚动条以添加到页面的元素。添加滚动条会将页面的布局更改几个像素,并更改我的组件的宽度,该组件在CSS中设置为
width:100%
。布局更改显然发生在更改检测周期内

问题是,我的getter函数然后返回一个不同的值,因为它的宽度确实随着页面布局的更改而更改,并触发ExpressionChangedTerithasBeenCheckedError

以下是我的功能:

get width() {
    return this.track.nativeElement.offsetWidth;
}

有什么方法可以避免或抑制此错误?

我认为如果您将
ngOnInit
中的宽度计算为
var
,然后在html中将其引用为
[style.width]='varName'
,则不会收到此错误。您还可以尝试使用
ngZone
,这在类似的问题上对我起到了作用:我必须考虑用户调整窗口大小的问题,因此将其存储在变量中对我来说并不真正起作用。我不确定在此场景中我将在何处/如何应用ngZone。