Это хак, который в основном имитирует щелчки по дереву. Я добавляю это решение, но я действительно надеюсь, что кто-то может найти что-то лучшее.
Учитывая компонент с tree
мы можем получить ссылку на treenodes
, а затем «нажмите» их по мере необходимости:
@Component({
selector: 'filemanager',
templateUrl: './filemanager.html',
directives: [Tree]
})
export class FileManagerComponent implements AfterViewInit {
constructor(private renderer:Renderer) {}
ngAfterViewInit() {
setTimeout(() => { // a timeout is necessary otherwise won't find the elements
// get the first "p-tree" tag and find his first "toggler"
let element = document.getElementsByTagName("p-tree")[0].getElementsByClassName("ui-tree-toggler fa fa-fw fa-caret-right")[0];
//"click" the toggler using the angular2 renderer
let event = new MouseEvent('click', {bubbles: true});
this.renderer.invokeElementMethod(element, 'dispatchEvent', [event]);
}, 200);
}
// more methods and state...
}
В случае, если вам необходимо инициализировать глубокие узлы в дереве вам нужно гнездо setTimeout
функции.
Ничего себе, это страшно обходным путем. – sixtyfootersdude
все обходные пути страшные :) – Sergio