ag-grid cellRenderer не удалось отобразить ячейку после оценки значения

У меня есть встроенный cellRenderer для изменения значения ячейки, как показано ниже:

cellRenderer: function (params) {
  if(params.value) {
    return params.value * 100;
  }
  return '';
}

В режиме отладки я заметил, что он правильно вычисляет значение. Пожалуйста, найдите скриншот

Но, момент управления выходит из cellRenderer, он бросает ниже исключения:

ERROR TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.
at CellComp.push../node_modules/ag-grid/dist/lib/rendering/cellComp.js.CellComp.afterCellRendererCreated (cellComp.js:582)
at Promise.push../node_modules/ag-grid/dist/lib/utils.js.Promise.then (utils.js:1543)
at CellComp.push../node_modules/ag-grid/dist/lib/rendering/cellComp.js.CellComp.createCellRendererInstance (cellComp.js:564)
at CellComp.push../node_modules/ag-grid/dist/lib/rendering/cellComp.js.CellComp.attachCellRenderer (cellComp.js:589)
at CellComp.push../node_modules/ag-grid/dist/lib/rendering/cellComp.js.CellComp.afterAttached (cellComp.js:100)
at rowComp.js:938
at Array.forEach (<anonymous>)
at RowComp.push../node_modules/ag-grid/dist/lib/rendering/rowComp.js.RowComp.callAfterRowAttachedOnCells (rowComp.js:936)
at RowComp.push../node_modules/ag-grid/dist/lib/rendering/rowComp.js.RowComp.insertCellsIntoContainer (rowComp.js:554)
at RowComp.push../node_modules/ag-grid/dist/lib/rendering/rowComp.js.RowComp.refreshCellsInAnimationFrame (rowComp.js:460)

У меня есть много других таких cellRenderer, которые работают нормально. Не уверен, что не так в этом конкретном. Например, ниже один работает просто отлично:

cellRenderer: function (params) {
  return params.context.formatDate(params.data.createdDateTime);
}

я использую "ag-grid-enterprise": "^16.0.0", и угловой 6.

1 ответ

Согласно @Sh. Комментарий Павла, сработало после обновления до return ''+ params.value * 100,

Важно понимать, что cellRenderer надеется string взамен, так что он непосредственно добавляет его в DOM.

Как то, что вы возвращали, было numberсобственно Node не был создан (я думаю). Который был решен путем return '' + params.value * 100;,

Другие вопросы по тегам