- Adding *ngFor to ng-template #treeNodeTemplate causes the tree to refresh infinitely.
Related to angular-tree-component with Angular 7.
<tree-root [nodes]="data" #tree [options]="customTemplateStringOptions">
<ng-template #treeNodeTemplate let-node="node" let-index="index">
<div class='model-tree-item'>
<div>{{ node.data.getItemText() }}</div> <!-- supposed to get text from object -->
<!-- This loop runs infinitely, getTestData() returns [1, 2, 3], keeps getting called -->
<ng-template ngFor [ngForOf]="getTestData()" let-item>
{{item}}
</ng-template>
</div>
</ng-template>
</tree-root>
Tried this with simple
<div *ngFor="let item of [1, 2, 3]"> (or getTestData(), same result)
This is the tree options object:
public customTemplateStringOptions: ITreeOptions = {
// displayField: 'subTitle',
// isExpandedField: 'expanded',
idField: 'uuid',
getChildren: this.getChildren.bind(this),
nodeHeight: 23,
allowDrag: (node) => {
return false;
},
allowDrop: (node) => {
return false;
}
}
Here is getTestData():
getTestData() {
console.log('test data');
return [1, 2, 3];
}
Results: Console output after tree is rendered
test data
test data
test data
test data
test data
test data
...
This problem was opened in the following link but looks like it was never addressed as the poster did not respond: Problem Link