自嵌套组件的更改检测解决方案

时间:2019-07-30 10:21:28

标签: angular

我有一个具有这种结构的组件

<comp>
    <comp> </comp>
    <comp> </comp>
</comp>

深度嵌套的子项中的更改/单击事件可能导致整个“树”的更新。例如:下面这张图片左侧的勾号

https://www.jstree.com/

enter image description here

我应将哪种变更检测策略应用于此类问题? 我已经尝试使用 EventEmitter 从深子级发出“选定节点”事件,直到最高节点

我还认为所有节点都可以订阅一个主题并进行更新

适用于此类问题的正确解决方案是什么?

1 个答案:

答案 0 :(得分:0)

对我来说,方法是您的组件具有@Input个子级,父级和级别,因此您可以递归更改值,可以在this response in SO中看到一个示例。 “键”被声明为变量“自我”和输入

self=this;
@Input() level: number;
@Input() children: any;
@Input() parent: any;

做些喜欢的

<li *ngFor="let item of children">
    {{item.label}}
    <ul recursive *ngIf="item.children" 
        [children]="item.children" 
        [parent]="self" 
        [level]="level!=undefined?level+1:0">
            </ul>
</li>