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

Prime NG:typescript中的树传播SelectionUp

  •  0
  • Neamesis  · 技术社区  · 6 年前

    我是一个使用JHipster构建的应用程序的初学者,使用Angular 4.3和Priming。 我有一棵树和一个搜索栏。

    当我点击打开树时,复选框很好,如下所示: Tree opened with clicks

    但我有一个问题,当我在搜索栏中进行研究时,我用typescript代码手动打开树,当我将右叶放入所选节点时,它不会检查国家和大陆(父节点):

    Tree opened in typescript

    以下是我的HTML代码:

        <jhi-search-bar [data]="items" (onItemSelected)="openNodeAfterSearch($event)"></jhi-search-bar>
        <p-tree class="arbre"
                            [loading]="loading"
                            [value]="nodes"
                            selectionMode="checkbox"
                            (onNodeSelect)="onChange()"
                            (onNodeUnselect)="onChange()"
                            [(selection)]="selectedNodes"></p-tree>
    

    这是我的TS代码:

    openNodeAfterSearch(item: any) {
        const racine = this.nodes[0];
        // I close all unecessary opened nodes
        for (const continent of racine.children) {
            continent.expanded = false;
            for (const country of continent.children) {
                country.expanded = false;
                for (const item of country.children) {
                    if (item.data.id === item.item.id) { // right node to open
    
                        this.selectedNodes = [];
                        this.selectedNodes.push(item);
    
                        country.expanded = true; // open parent's node
                        continent.expanded = true;
                    }
                }
            }
        }
    }
    

    我已经尝试过这个HTML属性,但失败了:

    [propagateSelectionUp]="true" 
    

    我也不想这样继续下去:

    this.selectedNodes.push(country);
    this.selectedNodes.push(continent);
    

    因为我得到了这个:

    All in selectedNodes

    有人有主意吗?

    朱莉。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Neamesis    6 年前

    我找到了解决办法:

    country.partialSelected = true;
    continent.partialSelected = true;
    

    只需要添加一些条件来检查是否所有的孩子都被选中。

        2
  •  0
  •   Kargar    4 年前

    解决了的 :) !!!!!!!!!

    你应该使用 支架 在这里

    [propagateSelectionUp]=“false” [propagateSelectionDown]=“false”