Вы можете использовать рекурсивный компонент.
Сначала вы можете определить интерфейс папки:
interface Folder {
id: number;
folderName: string;
files: string[];
folders: Folder[];
}
Затем используйте его для правильного определения ваших данных:
const folder: Folder = {
id: 0,
folderName: "Folder0",
files: ["File 1", "File 2"],
folders: [
{
id: 1,
folderName: "Folder1",
files: ["File 1", "File 2"],
folders: [
{
id:3,
files: ["File 1"],
folderName: "Subfolder of folder1",
folders: []
}
]
},
{
id: 2,
folderName: "Folder2",
files: ["File 1", "File 2"],
folders: []
}
]
};
Затем создайте компонент для отображения любого объекта папки:
*. html
<h1>{{ folder.folderName }}</h1>
<ul>
<li *ngFor="let fileName of folder.files">
{{ fildeName }}
</li>
</ul>
<!-- Display subfolders -->
<display-folder *ngFor="let subFolder of folder.folders" [folder]="subFolder"></display-folder>
*. Ts
@Component({
selector: 'display-folder',
...
})
export class DisplayFolder {
@Input() folder: Folder;
}