【发布时间】:2020-01-31 17:32:36
【问题描述】:
按照 ag-grid https://www.ag-grid.com/javascript-grid-selection/#deep-dive-example-using-for-each-node 的示例,我想实现一种使用键盘错误更改行选择的方法。
这是我的代码:
<ag-grid-angular #agGrid class="ag-theme-bootstrap" headerHeight="36" rowHeight="43"
[rowData]="rowData | async" [columnDefs]="columnDefs" [rowSelection]="rowSelection"
[ [navigateToNextCell]="myNavigation"
(gridReady)="onGridReady($event)" (rowDataChanged)="onRowDataUpdated()"
>
</ag-grid-angular>
gridColumnApi;
gridApi;
onGridReady(params) {
this.gridApi = params.api;
this.gridColumnApi = params.columnApi;
}
myNavigation(params) {
console.log('nav');
console.log(this.gridApi);
var previousCell = params.previousCellDef;
var suggestedNextCell = params.nextCellDef;
var KEY_UP = 38;
var KEY_DOWN = 40;
var KEY_LEFT = 37;
var KEY_RIGHT = 39;
switch (params.key) {
case KEY_DOWN:
previousCell = params.previousCellDef;
console.log(params);
this.gridApi.forEachNode((node) => {
if (previousCell.rowIndex + 1 === node.rowIndex) {
node.setSelected(true);
}
});
return suggestedNextCell;
case KEY_UP:
previousCell = params.previousCellDef;
// set selected cell on current cell - 1
this.gridApi.forEachNode((node) => {
if (previousCell.rowIndex - 1 === node.rowIndex) {
node.setSelected(true);
}
});
return suggestedNextCell;
case KEY_LEFT:
case KEY_RIGHT:
return suggestedNextCell;
default:
throw "this will never happen, navigation is always one of the 4 keys above";
}
}
问题是,在 MyNavigation 方法中我可以访问“this”。 我收到错误“无法访问未定义的 gridApi”。 当我将“this”记录到控制台时,我得到了未定义。有谁知道我做错了什么?
【问题讨论】:
标签: angular ag-grid ag-grid-angular