1

组件.html

<dx-data-grid>
 <dxi-column *ngFor="let column of columns">
  // creating columns
 </dxi-column>
</dx-data-grid>

组件.ts

public setupColumnsAndState(newColumns[]: any, state: any) {
 columns = newColumns[];
 // Is there something that could be done here to update datagrid columns?
 this.datagrid.instance.state(state); //state has columns
}

设置数据网格状态时,如果状态内的列在数据网格中尚不存在(例如,状态有 5 列,数据网格只有 3 列),则在设置状态时,数据网格会将它们过滤掉。

所以在这个例子中(我认为正在发生的事情)

  • 正在设置列
  • 页面尚未创建列
  • datagrid 没有更新的列
  • 设置状态时,数据网格列为空,因此正在过滤状态列。

我已经尝试研究 ngZone 和 changeDetectorRef,但我无法让它正常工作,并且不确定这些在这种情况下是否会有所帮助。

4

1 回答 1

1

尝试类似以下内容。设置一个 ChangeDetectorRef 并在您有当前评论的地方调用 detectChanges。

constructor(private cd: ChangeDetectorRef) {}
public someFn() {
  this.cd.detectChanges();
  // ngOnChanges will be called
}

信息来自:本文

于 2020-02-26T16:42:13.827 回答