1

我正在ExpressionChangedAfterItHasBeenCheckedError使用 getter 和 BehaviorSubject(很有趣,对吗?)。

这是组件中的代码

    private _windowHeight: string = '';

    constructor( private stepService: StepService, private commonService: CommonService ) {
      this.commonService.windowHeight.subscribe( ( height: number ) => {
        this._windowHeight = height + 'px';
      } );
    }

    @HostBinding( 'style.min-height' )
    public get windowHeight(): string {
      return this._windowHeight;
    }

commonService.windowHeight是一个 BehaviorSubject。在普通浏览器中运行此代码时,一切都很好。

当我尝试使用该组件运行单元测试时,我的问题就出现了。所有导入、声明和提供程序都很好,并且仍然可以通过这样的简单测试

  it( 'should create', () => {
    expect( component ).toBeTruthy();
  } );

它抛出Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '0px'. Current value: '865px'.

这里可能是什么问题?环境:Angular 4.0.2、Angular CLI、业力、无头 Chrome。

谢谢!

4

0 回答 0