#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;
},