Я реализовал 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);
}