Рекурсивная функция для detailCellRendererParams, Ag-Grid?

#javascript #typescript #recursion #ag-grid #ag-grid-angular

#javascript #typescript #рекурсия #ag-grid #ag-grid-угловой

Вопрос:

У меня есть данные, которые состоят из нескольких строк данных. Каждая строка содержит свойство массива ‘children’, которое может содержать данные в виде большего количества строк или может быть пустым. Кроме того, каждая из строк в свойстве массива ‘children’ может также содержать больше «дочерних» данных или строк и т.д., Поэтому это выглядит следующим образом (думайте о каждой строке как о строке, а о каждой строке с отступом — как о дочерней строке этой строки):

 r|-------
 r1|------*
   r1a|------
   r1b|------*
      r1b1|------
   r1c|------*
      r1c1|------
      r1c2|------
 r2|------
 r3|------*
   r3a|------
   r3b|------
  

У каждого родителя, содержащего дочерние строки (я пометил их символом ‘*’), должны быть определены detailCellRendererParams , что было бы нормально, если бы я просто собирался определить каждый из них вручную (как показано в документации Ag-Grid в разделе Мастер вложенности / Detail, однако неизвестно, сколько родительских / дочерних строк там будет. Я ищу возможность создать рекурсивную функцию, которая определяет detailCellRendererParams для каждой родительской строки с дочерними элементами. Как я мог бы написать что-то подобное?

Ответ №1:

Рекурсия не требуется, просто используйте функциональность дерева данных ag-grid:

https://www.ag-grid.com/javascript-grid-tree-data/

Вам нужно включить функциональность дерева с:

 var gridOptions = {
    treeData: true,
    ...
}
  

и предоставьте grid поле, которое создает вашу древовидную иерархию

 gridOptions.getDataPath: function(data) {
   return data.myHierarchyField;
},