如何在 angular 的 ag-grid 上触发 firstDataRendered?

how to trigger firstDataRendered on ag-grid in angular?

我的组件有获取数据的输入 我用 firstDataRendered 选择第一行。 问题是当输入数据发生变化时网格不会触发事件 如何根据我的输入更改触发网格事件?

 <ag-grid-angular
  #agGrid
  class="ag-theme-alpine"
  style="width: 100%; height: 500px"
  [rowData]="flights"
  [columnDefs]="columnDefs"
  [rowSelection]="'single'"
  (gridReady)="onGridReady($event)"
  (firstDataRendered)="onFirstDataRendered($event)"
>
</ag-grid-angular>

import {
  Component,
  Input,
  OnChanges,
  OnInit,
  SimpleChanges,
} from '@angular/core';
import { Flight } from './model/flight.interface';

@Component({
  selector: 'app-worker-flights-list',
  templateUrl: './worker-flights-list.component.html',
  styleUrls: ['./worker-flights-list.component.css'],
})
export class WorkerFlightsListComponent implements OnInit, OnChanges {
  @Input() flights: Flight[] = [];
  gridApi: any;
  rendered: boolean;
  columnDefs = [
    { headerName: 'Flight Number', field: 'num' },
    { headerName: 'Origin', field: 'from' },
    { headerName: 'Origin Date', field: 'from_date' },
    { headerName: 'Destination', field: 'to' },
    { headerName: 'Destination Date', field: 'to_date' },
  ];
  constructor() {}
  ngOnChanges(changes: SimpleChanges): void {
    if (changes['flights'] && this.rendered) {
      // this.gridApi.api.getDisplayedRowAtIndex(0).setSelected(true);
    }
  }

  ngOnInit(): void {}
  onGridReady(grid: any): void {
    debugger;
    this.gridApi = grid;
  }
  onFirstDataRendered(params: any): void {
    this.rendered = true;
    this.gridApi.api.getDisplayedRowAtIndex(0).setSelected(true);
  }
}

事件 firstDataRendered 只会在 第一次 呈现数据时触发,而不是每次呈现或更新数据时触发。查看事件定义 here.

一个解决方案是像这样利用 rowDataChanged 事件:

onRowDataChanged(params: any): void {
    this.rendered = true;
    params.api.getDisplayedRowAtIndex(0).setSelected(true);
  }

观看演示 ​​here