Angular 5 Material Table ExpressionChangedAfterItHasBeenCheckedError

时间:2018-03-23 14:38:05

标签: angular angular5 angular-material2

在我的搜索组件中,我有一个带有属性绑定的表组件

<app-attributes-table [data]="data"></app-attributes-table>

我的搜索服务返回一个自定义类型的observable,搜索组件在更改处理程序中订阅并设置this.data。这将更新表组件中的数据变量,该变量将显示为搜索结果。

this.searchService.getParts(this.search).subscribe(data => {
  this.data = data; 
}

完成后,表组件抛出以下错误:

  

检查后表情发生了变化。上一个值:'错误:   未定义”。当前值:'错误:未定义'。这似乎是观点   已经在其父母及其子女变脏之后创建   检查。它是否已在变更检测钩子中创建?

为什么认为表达式在检查后因前一个值和当前值相同而发生了变化?也许这是一个错误。

1 个答案:

答案 0 :(得分:1)

如果在初始化视图后在子组件中再次运行更改检测,则不会引发错误。我不确定我是否正确理解了这种机制,这可能完全绕过它。

constructor(private changeDetectorRef: ChangeDetectorRef) { }

ngAfterViewInit() {
   this.changeDetectorRef.detectChanges();
}