Как развернуть весь родительский узел конкретного дочернего узла, используя управление вложенным деревом дерева матов в angular 8? - PullRequest
0 голосов
/ 18 июня 2020

getBookOutlineBar метод принимает список узлов и выбранный узел, который необходимо выбрать при открытии боковой панели схемы. Я реализовал метод расширения для расширения всех родительских узлов, но он расширяет только один конкретный узел, а не все родительские узлы. Если открыта страница «Заголовок» и я нажимаю на боковую панель контура, тогда все родительские узлы должны быть развернуты и должен быть выбран заголовок. Я использовал управление вложенным деревом дерева матов в angular 8 (этот пример используется в моем коде: https://stackblitz.com/angular/dklgxbrynad?file=src%2Fapp%2Ftree-nested-overview-example.ts). Пожалуйста, предложите любую помощь.


getBookOutlineBar() {
        let customURL = '';
        this.bookService.GetBookOutlineBar(this.bookId, location.hash).subscribe(data => {
          this.dataSource.data = data.list;
          if (data.selectedNode != null) {
            this.selectedNode = data.selectedNode;
            this.treeControl.collapseAll();
            this.expand(this.dataSource.data, this.selectedNode.UniqueId);
          }    
        })
      }
    expand(data: BookOutlineBar[], uniqueId: string): any {
        data.forEach(node => {
          if (node.Children && node.Children.find(c => c.UniqueId === uniqueId)) {
            this.treeControl.expand(node);
            this.expand(this.treeControl.dataNodes, node.UniqueId);
          }
          else if (node.Children && node.Children.find(c => c.Children)) {
            this.expand(node.Children, uniqueId);
          }
        });
      }

I want to expand all parent nodes of selected node like in image

1 Ответ

1 голос
/ 19 июня 2020

Ваш код

 if (node.Children && node.Children.find(c => c.UniqueId === uniqueId)) {
            this.treeControl.expand(node);
            this.expand(this.treeControl.dataNodes, node.UniqueId);
          }

Заменить на

 if (node.Children && node.Children.find(c => c.UniqueId === uniqueId)) {
            this.treeControl.expand(node);
            this.expand(this.dataSource.data, node.UniqueId);
          }
...