Ag-grid Angular firstDataRendered不会触发

时间:2019-12-12 21:51:30

标签: angular ag-grid ag-grid-angular

我正在为数据表使用ag-grid。在测试事件firstDataRendered事件时,它根本不会触发,而gridReady会触发。我只是分配了一个基本功能fire(){console.log(“ HEY”)}。有什么可以阻止此事件的发生?

<ag-grid-angular 
  style="width: auto; height: 250px"
  [rowData]="tblData"
  [columnDefs]="tableHeaders"
  [gridOptions]="gridOptions"
  [defaultColDef]="defaultColDef"
  (firstDataRendered)="fire($event)"
  (gridReady)="onGridReady($event)">
</ag-grid-angular>

3 个答案:

答案 0 :(得分:0)

我在这里有一个工作示例:

https://stackblitz.com/edit/angular-ag-grid-first-data

是不是您使用的是较早版本的ag-grid?我认为在版本19中添加了“ firstDataRendered”事件。

答案 1 :(得分:0)

我不确定这是否适用于您的问题,但是如果网格中没有行,则firstDataRendered将不会触发(对我来说似乎很la脚,但他们说这是设计使然)。

您可以通过检查行数据长度在gridReady事件中检测到此问题:

 if (this.rowData.length === 0) {
     // firstDataRendered will not fire here - 
     // but this is where you can process the 'no data' code. 
  }

答案 2 :(得分:0)

如果您在Observable上使用订阅来填充绑定到HTML模板中[rowData]的属性tblData,则不会触发firstDataRendered函数。

如果将可观察值转换为Promise,则数据将立即填充到网格中,然后您的firstDataRendered函数将在您的gridready函数启动后触发,您可以根据需要在其中应用逻辑。

您可以仅用以下一行代码将observable转换为promise:

let promisevar = observable.toPromise()

现在,您可以应用逻辑来填充内部网格,然后进行以下条件调整:

promisevar.then('logic to populate grid');

希望这可以帮助遇到相同问题的人。