【发布时间】:2020-10-14 04:16:19
【问题描述】:
树视图.html
<div *ngFor="let item of nodes; let i=index" class="parent" [id]="item.name" appTreeView>
{{item.name}}
<div class="child" *ngIf="item.child">
<app-tree-view [nodes]="item.child"></app-tree-view> // recursive call
</div>
</div>
treeview.ts
this.data=[
{
name:"level 1",
child:[
{
name:"level 1.1",
}
]
},
{
name:"level 2",
child:[
{
name:"level 2.1",
child:[
{
name:"level 2.1.1"
}
]
}
]
}
]
directive.ts
import { Directive, HostListener,Renderer2 } from '@angular/core';
@Directive({
selector: '[appTreeView]',
})
export class TreeViewDirective {
constructor(private render:Renderer2) { }
@HostListener('click',['$event'])
check(event){
console.log(event.target.id);
const avalclass:string=event.target.classList.value;
if(avalclass.includes('expand')){
this.render.removeClass(event.target,'expand');
}else{
this.render.addClass(event.target,'expand');
}
}
}
输出
- 1 级
- 2 级
如果我点击 2 级展开子菜单 2.1 级 控制台打印一次
- 1 级
- 2 级
- 2.1 级
然后我点击 2.1 级展开子菜单 2.1.1 控制台打印两次
- 1 级
- 2 级
- 2.1级
- 2.1.1 级
- 2.1级
为什么控制台打印多次。我的错误是什么
【问题讨论】: