Mat Tree Угловой материал с хранилищем ngrx в качестве источника данных - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь подключить Mat Tree к моему магазину под ngrx, но у меня много проблем. Начиная с https://stackblitz.com/edit/material-tree-dynamic я хотел бы изменить текущий источник данных в моем магазине; Я хочу получить данные из хранилища на первом и втором уровнях дерева, а для вложенного уровня я хочу проверить, загружены ли они в хранилище, в противном случае мне нужно загрузить их из запроса API (затем сохранить в хранилище). Есть какой-нибудь пример для чего-то подобного? или кто-то может дать мне предложение?

1 Ответ

0 голосов
/ 10 января 2019

Я реализовал DataSource, который принимает обратный вызов в качестве параметра конструктора. В своем компоненте дерева я создаю экземпляр TreeControl и DataSource. Посредством обратного вызова я могу отправить или развернуть действия по отношению к магазину. Мне любопытно, каково было ваше решение.

@Component({
  selector: 'app-tree',
  templateUrl: './tree.component.html',
  styleUrls: ['./tree.component.scss']
})
export class TreeComponent implements OnInit {
  nestedTreeControl: NestedTreeControl<Node>;
  dataSource: MyNestedTreeDataSource;

  // alternatively inject the store in the constructor
  // and dispatch the action directly in the callback
  @Output()
  expandNode = new EventEmitter<Node>();

  constructor() {
    this.nestedTreeControl = new NestedTreeControl<Node>(this._getChildren);
    this.dataSource = new MyNestedTreeDataSource(this.nestedTreeControl, this.onExpandNode.bind(this));
  }

  onExpandNode(node: Node): void {
    this.expandNode.emit(node);
  }

  private _getChildren = (node: Node) => of(node.children);
}
...