彼らが見えているかどうかをチェックするためのノードにプロパティを追加します。
import {Component, Input} from '@angular/core';
@Component ({
selector: 'tree-view',
template: `
<ul>
<li *ngFor="let node of treeData">
<span *ngIf="node.children?.length" (click)="toggleChildren()">[+]</span>
{{node.name}}
<tree-view [treeData]="node.children"></tree-view>
</li>
</ul>
`
})
export class TreeView {
@Input() treeData: any[];
toggleChildren() {
// to do
}
}
は、ここですべてとPlunkerです。あなたがそれらを見せているならば、あなたはそれらを隠します。
これは、実装方法の簡単な例です。ノードが表示されているときに[-]
のアイコン[+]
を変更して、このアイコンを改善することができます。
import {Component, Input} from '@angular/core';
@Component ({
selector: 'tree-view',
template: `
<ul>
<li *ngFor="let node of treeData">
<span *ngIf="node.children?.length" (click)="toggleChildren(node)">[+]</span>
{{node.name}}
<tree-view [treeData]="node.children" *ngIf="node.visible"></tree-view>
</li>
</ul>
`
})
export class TreeView {
@Input() treeData: any[];
toggleChildren(node: any) {
// to do
node.visible = !node.visible;
}
}
ありがとうございました!変数にvisibilityプロパティを追加していましたが、各ノードではなく、私の間違いです。 – nunoarruda