我正在为数据表使用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>
答案 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');
希望这可以帮助遇到相同问题的人。