【问题标题】:ExpressionChangedAfterItHasBeenCheckedError when testing Angular Material Table测试 Angular 材质表时的 ExpressionChangedAfterItHasBeenCheckedError
【发布时间】:2019-04-26 14:27:00
【问题描述】:

使用 Angular 7,我使用 ng generate @angular/material:table test-table 将材料表添加到我的应用程序中

在生成的模板里面有一个分页器:

<mat-paginator #paginator
    [length]="dataSource.data.length"
    [pageIndex]="0"
    [pageSize]="50"
    [pageSizeOptions]="[25, 50, 100, 250]">
</mat-paginator> 

在初始化时,数据源已更改:

ngOnInit() {
  this.dataSource = new ItemsTableDataSource(
    this.paginator,
    this.sort,
    this.route.paramMap,
    this.afs
 );
}

尝试在 Karma expect(component).toBeTruthy(); 上编译组件时出现以下错误

Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has 
changed after it was checked. Previous value: 'length: 0'. Current 
value: 'length: 1'.

我该如何解决这个问题?

【问题讨论】:

标签: angular karma-jasmine angular-material2 angular7


【解决方案1】:

不确定它的洁净程度如何,但就我而言,我只是从规范文件中删除了“fixture.detectChanges()”调用。我正在使用 A6 ReactiveForm,在测试中设置一些初始虚拟日期范围值。表单工作正常,但测试因您的错误而失败。

【讨论】:

  • 在我的手上,我们有 2 个 fixture.detectChanges() 语句,一个 beforeEach 和一个 it 函数回调。删除 it 函数回调中的那个对我有用。
猜你喜欢
  • 2018-09-02
  • 1970-01-01
  • 2018-07-06
  • 2018-06-17
  • 2020-07-23
  • 2020-12-17
  • 2018-07-16
  • 1970-01-01
  • 2019-04-22
相关资源
最近更新 更多