javascript - 从递归角度组件发布事件
问题描述
我有一个tree
组件,它用于递归地呈现在组件的 HTMLtree
选择器中使用的树。现在tree
组件也将事件公开为nodeSelected
( @Output
)。
HTML
<ul>
<li *ngFor="let item of node">
<div>
<span (click)="treeNodeSelected(item)">
{{item.name}}
</span>
</div>
<tree *ngIf="item.child.length > 0" [node]="item.child" (nodeSelected)="treeNodeSelected($event)"></tree>
</li>
</ul>
这是来自 ts 文件的片段
@Input("node") node;
@Output()
nodeSelected = new EventEmitter<any>(true);
..
..
treeNodeSelected(node) {
console.log("node", node);
this.nodeSelected.emit(node);
}
以及actual-component
我在tree
组件中使用过的地方
<tree [node]="nodeData" (nodeSelected)="selectedNode($event)"></tree>
实际组件.ts文件
selectedNode(node) {
console.log("End Component",node);
}
并在 UI 上输出
A
|-B
|-C
现在如果我点击C然后在控制台上
node {...}
node {...}
node {...}
component {...}
如果我点击B然后在控制台上
node {...}
node {...}
component {...}
如果在顶部节点上,即在A上,则
node {...}
component {...}
我猜这是因为树组件标记内部应该从ActualComponent.ts<tree>
文件定义回调方法,但我已经从tree.ts文件定义了它。我怎样才能做到这一点?最终目标是发出一次事件。
解决方案
推荐阅读
- c# - 蓝牙串行端口 (SPP) 传入端口创建
- android - Recycler View Not Reading Big Volley data with params in android
- amazon-web-services - 在 AWS 上按顺序激活 2 个或更多数据管道的最佳方法是什么?
- sql - Gettint 尝试在删除行 sql 后捕获事件
- ios - 当应用程序的语言为阿拉伯语时,日期转换为阿拉伯数字
- regex - perl6 语法中的 <.ident> 函数/捕获
- python - 资源失败的Django路径?
- cassandra - 在 Cassandra 中使用 TTL 和 Delete 哪个更好?
- javascript - 当我将标头附加到请求时,Ajax 发布请求不起作用
- android - 在独立工具栏中添加菜单?