ImmutableService требует, чтобы был реализован обратный вызов getRowNodeId (), ваши данные строки должны иметь идентификаторы - PullRequest
0 голосов
/ 16 февраля 2019

Я попытался добавить

[deltaRowDataMode]="true"

к моей сетке и вызвал

this.gridApi.setRowData(this.rowData);

, но код выдает ошибку

ag-Grid: ImmutableService requires getRowNodeId() callback to be implemented, your row data need IDs!

push ../ projects/secdo-infra-lib/node_modules/ag-grid-community/dist/lib/rowModels/clientSide/immutableService.js.ImmutableService.createTransactionForRowData @ immutableService.js: 38 push ../ projects / secdo-infra-lib / nodeag-grid-community / dist / lib / gridApi.js.GridApi.setRowData @ gridApi.js: 151

Просматривая это в Интернете, я прочитал, что getRowNodeId генерируется автоматически, если не установлен, поэтому я не понимаюпочему выдается ошибка.

1 Ответ

0 голосов
/ 17 февраля 2019

Из документов

Для работы deltaRowDataMode необходимо предоставить идентификаторы для узлов строки путем реализации обратного вызова getRowNodeId ().

Сетка обрабатывает дельта-изменения по следующим правилам:

ЕСЛИ в идентификаторе нового элемента нет соответствующего элемента, уже находящегося в сетке, то это «добавление».
ЕСЛИ идентификатор дляновый элемент имеет соответствующий элемент в сетке, затем сравните ссылки на объекты.Если ссылки на объекты различны, это обновление, в противном случае это ничто (исключено из транзакции).
ЕСЛИ в таблице есть элементы, для которых нет соответствующих элементов в новых данных, то это «удалить».

Вы можете реализовать getRowNodeId() таким образом, чтобы он возвращал уникальные идентификаторы для каждой строки.например,

this.getRowNodeId = function(data) {
  return data.id; //id is a field here
};

Этот официальный пример содержит более подробную информацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...