【问题标题】:Ag-grid Angular firstDataRendered does not fireAg-grid Angular firstDataRendered 不会触发
【发布时间】:2020-04-06 08:30:35
【问题描述】:

我正在为我的数据表使用 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>

【问题讨论】:

  • 可以分享component.ts文件吗

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


【解决方案1】:

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

如果您将 observable 转换为 promise,则数据将立即填充到网格中,然后您的 firstDataRendered 函数将在您的 gridready 函数之后触发,您可以根据您的要求在此处应用您的逻辑。

只需一行代码,您就可以将 observable 转换为 Promise,如下所示:

let promisevar = observable.toPromise()

现在您可以应用您的逻辑来填充内部网格,然后条件如下:

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

希望这对面临同样问题的人有所帮助。

【讨论】:

    【解决方案2】:

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

    您可以通过检查行数据长度在 gridReady 事件中检测到这一点:

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

    【讨论】:

    • 它的名字虽然对吗?第一个 DATA 渲染。如果现在有行...没有数据
    • 是的,但是如果您希望代码在加载(或不加载)网格后运行,则没有这样的事件,恕我直言。
    猜你喜欢
    • 2021-04-10
    • 1970-01-01
    • 2016-06-14
    • 2021-11-05
    • 2018-10-26
    • 2021-10-05
    • 2021-09-03
    • 2022-10-19
    • 2019-04-13
    相关资源
    最近更新 更多