使用 ag-grid-angular 中的 onKeyDown 事件监听器时,可能会发现箭头键不会被触发。这是因为 ag-grid-angular 默认将焦点绑定在表格中的某个单元格,而不是在整个应用程序上。因此,当使用箭头键时,焦点并不在整个应用程序上,所以 onKeyDown 事件没有被触发。
要解决这个问题,可以添加以下代码到你的组件中:
import { Component, ViewChild } from '@angular/core';
import { GridOptions } from 'ag-grid-community';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
})
export class AppComponent {
@ViewChild('agGrid') agGrid;
private gridOptions: GridOptions;
constructor() {
this.gridOptions = {
...
suppressCellSelection: false,
...
};
}
onGridReady(params) {
// Set focus on the whole grid
params.api.getDisplayedRowAtIndex(0).setSelected(true);
}
onCellKeyDown(event) {
console.log('Key down event', event.event);
}
}
在这段代码中,我们将 suppressCellSelection 设置为 false,这表示在 ag-grid 中可以选择整个 grid 而不是单元格。然后我们通过 onGridReady 中的代码将焦点设置在整个 grid 上。最后,我们在组件中添加了一个 onCellKeyDown 方法,它将监听所有的 onKeyDown 事件并打印到控制台中以方便测试。
这样,就可以正确地使用键盘监听器了。