Angular PrimeNG p-tree - Как программно сфокусировать узел по его идентификатору? - PullRequest
0 голосов
/ 28 января 2019

У меня есть р-дерево с категориями.Когда я перехожу на страницу категорий с идентификатором категории, я хочу, чтобы p-дерево было сфокусировано на нужной категории.

HTML

 <p-tree  *ngIf="categoriesTree" [value]="categoriesTree" selectionMode="single"   [selection]="getselectedCategory()" (onNodeSelect)="categorySelected($event)" ></p-tree>

Я пыталсяустановить функцию в атрибуте [selection] и вернуть узел, но это не сработало.

Функция

public getselectedCategory(){
    this.sortService.CategoryObjectOut.subscribe(val=>{
      for(let i =0; i< this.categoriesTree.length;i++){
        if(this.categoriesTree[i] == val.node){
          this.selectedCategory=val
          return this.selectedCategory.node;
        }
      }
    })
  }

Например, если я установлю [selected]="categoriesTree[0]", она будет работать нормально.Но я хочу сделать это динамически.

В чем проблема?

1 Ответ

0 голосов
/ 14 мая 2019

На самом деле, чтобы иметь возможность автоматически фокусироваться на узле, вам не нужен его идентификатор, в простейшей версии 7.0.5 вы можете использовать свойство «selection» и присваивать ему то же, что и вашему узлу для фокусировки.,Для более подробной информации: В дереве ex.html:

 <p-tree
  [value]="nodes"
  selectionMode ="single"
  [(selection)] ="selectedNode"      
  >
</p-tree>

В дереве ex.ts:

selectedNode :TreeNode;
//do something with selectedNode 
selectedNode = this.selectedNode;
...