2017-10-15 32 views
0

J'ai ces données sur p-tree (primeng), je veux savoir s'il est possible de mettre toutes les valeurs sélectionnées dans la charge initiale. J'essayais de mettre un nouveau tableau sur 'selectedFiles', avec les données actuelles, les parents et les enfants dans le même niveau, sur le tableau, travaillant uniquement avec le nœud parent, mais avec les nœuds enfants ne fonctionne pas.Comment sélectionner tous les nœuds sur l'arbre p-tree angulaire principal?

données:

this.filesTree = [ 
    { 
     "label": "Documents", 
     "data": "Documents Folder", 
     "expandedIcon": "fa-folder-open", 
     "collapsedIcon": "fa-folder", 
     "children": [{ 
       "label": "Work", 
       "data": "Work Folder", 
       "expandedIcon": "fa-folder-open", 
       "collapsedIcon": "fa-folder", 
       "children": [{"label": "Expenses.doc", "icon": "fa-file-word-o", "data": "Expenses Document"}, {"label": "Resume.doc", "icon": "fa-file-word-o", "data": "Resume Document"}] 
      }, 
      { 
       "label": "Home", 
       "data": "Home Folder", 
       "expandedIcon": "fa-folder-open", 
       "collapsedIcon": "fa-folder", 
       "children": [{"label": "Invoices.txt", "icon": "fa-file-word-o", "data": "Invoices for this month"}] 
      }] 
    } 
]; 

Code angulaire:

export class TreeDemo implements OnInit { 

msgs: Message[]; 

@ViewChild('expandingTree') 
expandingTree: Tree; 
selectedFile: TreeNode; 
constructor(private nodeService: NodeService) { } 

ngOnInit() { 

    this.nodeService.getFiles().then(files => this.filesTree = files); 
} 

selectAll(){ 
// with the parent nodes is working 
this.selectedFiles = this.filesTree.map(
    files => { 
    ... files 
}) 
//this is an example of how I want to store but is not working 
this.filesTree 
    .map(files => { 
    this.selectedFiles = files.children 
     .map(file => { 
     return { 
      ... file, 
      parent: files 
     }; 
    }); 
    }); 

} 

Modèle:

<h3>Multiple Selection with Checkbox</h3> 
<p-tree 
[value]="filesTree" 
selectionMode="checkbox" 
[(selection)]="selectedFiles"> 
</p-tree> 
<div>Selected Nodes: 
<span *ngFor="let file of selectedFiles2">{file.label} </span> 
</div 

Répondre

0

Vous êtes très probablement devoir écrire une fonction récursive à l'étape par de chaque élément enfants pour ajouter les éléments à la variable selectedFiles en tant que variable de données filesTree, bien qu'un tableau, n'est qu'un tableau des parents de premier niveau.

0

Premièrement, procédé pour ajouter tous les noeuds d'un réseau

flattenTree(node : TreeNode) 
{ 
    this.arr.push(node); 

    if (node.children) 
    { 
     node.children.forEach(childNode => { 
      this.flattenTree(childNode); 
     }); 
    } 
} 

ensuite réglé selectedItems = tableau de tous les noeuds

test(node) 
{ 
    this.filesTree11.forEach(node => { 
     this.flattenTree(node); 
    }); 

    this.selectedItems = this.arr; // select all nodes 
}