Я создаю повторно используемый компонент TreeView в AngularJS, который принимает следующий объект в качестве входных данных,
[
{
label: "1",
children: [{
label: "1.1",
children: [{
label: "1.1.1",
}]
},
{
label: "1.2",
}
]
},
{
label: "2
}
]
И для этого должен отобразить TreeView. По ряду причин я хочу, чтобы сгенерированная структура HTML состояла из плоской 'li'
Например.
<ul>
<li> 1 </li>
<li> 1.1 </li>
<li> 1.1.1 </li>
<li> 1.2 </li>
<li> 2 </li>
</ul>
Другие требования:
Вот jsFiddle, с которым можно поиграть. Пока могу отрендерить только первый уровень. Спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


в Angular2 вы можете отображать директивы рекурсивно. Это упрощает рендеринг дерева. Я немного изменил ваш Plunker, чтобы показать суть. Это не идеальная реализация, но работает, как ожидалось :).
Пример:
@Component({
selector: 'tree-view',
template: '
<div *ngFor = "#dir of dirs">
<tree-view [dirs] = "dir.dirs"></tree-view>
<div>
',
directives: [TreeView]
})
export class TreeView {
@Input()
private dirs: Array<Directory>;
}