Я использую Ag-Grid и Angular для этого проекта, и я пытаюсь настроить горячие клавиши для изменения значения «Статус» выбранных строк, нажимая соответствующие клавиши («1» = «статус»). завершить »и т. д.). Существует встроенная функция с именем onCellKeyPress()
, которая прослушивает нажатия клавиш после выбора строки или строк. Это прекрасно работает, у меня есть переключатель, который отправляет значение в зависимости от того, какая клавиша нажата, например:
onCellKeyPress = (e: any) => {
switch(e.event.key) {
case '0': this.rowUpdates('New'); break;
case '1': this.rowUpdates('Completed'); break;
case '2': this.rowUpdates('Needs Attention'); break;
case '3': this.rowUpdates('Rejected'); break;
}
}
Он отправляет строку в мою пользовательскую функцию rowUpdates()
, которая принимает значение, проходит через существующие узлы, ищет любые выбранные, устанавливает значение для выбранных и помещает их в массив.
Теперь вот где начинается проблема. updateRowData
принимает 2 параметра, во-первых, это тип обновления (добавление, удаление, обновление), в моем случае я использую последнее и массив строк для изменения.
rowUpdates = (value: String) => {
let itemsToUpdate = [];
this.gridOptions.api.forEachNode(rowNode => {
if(rowNode.isSelected() === true) {
const selected = rowNode.data;
selected.status.name = value;
itemsToUpdate.push(selected);
console.log(itemsToUpdate);
}
});
this.gridOptions.api.updateRowData({update: itemsToUpdate});
}
Однако, когда я нажимаю клавишу, чтобы изменить значение строки, она обновляет каждую строку в моей сетке. Что еще страннее, так это то, что у меня есть метод, который добавляет класс в строку в зависимости от значения «Status», и только строки, которые я намеревался изменить, получают этот класс.
Я в тупике. Я console.logged все в этой функции, и все они возвращаются с их предполагаемыми значениями. Массив всегда содержит выбранные узлы, и возвращаемое значение updateRowData всегда является тем же массивом. Я попытался переключить 'forEachNode' с getSelectedNodes
и getSelectedRows
безрезультатно. Есть идеи?