代码之家  ›  专栏  ›  技术社区  ›  Alex

清晰度+角度6:树视图节点侦听器(clr树节点)

  •  2
  • Alex  · 技术社区  · 7 年前

    我正在尝试跟踪对树节点数据源所做的更改。 每个节点都有一个 挑选出来的 属性,该属性反映节点选择状态。每次选择节点时,我都需要将选择发送到另一个组件,该组件将根据该选择构建另一棵树。

    我尝试使用OnChanges接口,但后来在文档中读到,只有在再次设置数据时才会调用ngOnChanges。

    这是我的简单模板:

       <clr-tree-node [(clrSelected)]="selected" >
            Asset
            <ng-template [clrIfExpanded]="true">
                <clr-tree-node *ngFor="let asset of assets" [(clrSelected)]="asset.selected">
                    {{asset.type}}
                </clr-tree-node>
            </ng-template>
        </clr-tree-node>
    

    是否有可以绑定的树节点事件可以用于(使用EventEmitter)发送更改的数据?例如onSelectionChange、onChange或其他什么? 还是其他机制?

    提前感谢,, 亚历克斯。

    1 回复  |  直到 7 年前
        1
  •  4
  •   pascalpuetz    7 年前

    template.html

    <clr-tree-node [clrSelected]="selected" (clrSelectedChange)="changeSelected($event)">
        Asset
        <ng-template [clrIfExpanded]="true">
            <clr-tree-node 
                *ngFor="let asset of assets 
                [clrSelected]="asset.selected"
                (clrSelectedChange)="changeSelectedAsset(asset, $event)"
            >{{asset.type}}</clr-tree-node>
        </ng-template>
    </clr-tree-node>
    

    组件技术

    @Component(...)
    export class MyComp {
        @Output public structureChange:EventEmitter<...> = new EventEmitter<...>();
    
        public changeSelected(data):void {
            this.selected = data;
            this.structureChange.emit(data);
        }
        public changeSelectedAsset(asset, data):void {
            asset.selected = data;
            this.structureChange.emit(this.selected);
        }
    }
    

    像这样的。当然,尽可能添加数据类型。

    推荐文章