2017-10-15 5 views
0

私はこのデータをp-tree(primeng)に持っています。初期ロードで選択されたすべての値を入れることができるかどうかを知りたいのですが。私は 'selectedFiles'に新しい配列を配置しようとしていましたが、現在のデータと、同じレベルの親と子が配列上にあり、親ノードとしか動作しませんでしたが、子ノードは動作しません。素数p-tree上のすべてのノードを選択する方法は?

データ:

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"}] 
      }] 
    } 
]; 

角度コード:

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 
     }; 
    }); 
    }); 

} 

テンプレート:あなたが最も可能性の高い各アイテムのステップスルーする再帰関数を記述する必要があるとしている

<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 

答えて

0

子はデータ変数としてselectedFiles変数に項目を追加するfilesTreeは配列ですが、トップレベルの親の配列だけです。

0

まず、アレイそして

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

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

にすべてのノードを追加するための方法は=すべてのノード

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

    this.selectedItems = this.arr; // select all nodes 
} 
のアレイをselectedItemsの設定
関連する問題