问题描述
我在带有嵌套对象数据数组的 angular 7 应用程序中使用 mat 树。 我想在用户对嵌套部分数据进行一些更改后展开嵌套部分。
我有大量对象,我可以展开一级树节点,但无法展开嵌套部分。
例如,我有 9.2.1.2 节号,所以在这种情况下,我必须扩展节号为 9、9.2、9.2.1 和 9.2.1.2 的节。 怎么做?下面是来自数组的示例对象
{
"sectionNum": 6,"title": "ETHICS AND REGULATORY APPRoval","csrSectionNum": "5","templateDTO": {
"sectionNum": 89,"parent": "0","sequence": 1,"active": 1,"subReportTypeId": 2,"sectionType": "3","isHighlightSection": 0,"children": [],"contents": null
},"isDefault": 1,"studyId": 2,"version": 0,"userId": 0,"createdDate": "2021-04-03 10:03:18","sectionIdentifiedPercentage": "100","isBookmarked": false,"children": [
{
"sectionNum": 7,"title": "INDEPENDENT ETHICS COMMITTEE APPRoval","csrSectionNum": "5.1","templateDTO": {
"sectionNum": 90,"parent": "5","sectionType": "4","contents": null
},"contents": null,"sfdtContent": null,"keywordInput": false
},{
"sectionNum": 8,"title": "ETHICAL CONDUCT OF THE STUDY","csrSectionNum": "5.2","templateDTO": {
"sectionNum": 91,"sequence": 2,{
"sectionNum": 9,"title": "PATIENT informatION AND CONSENT","csrSectionNum": "5.3","templateDTO": {
"sectionNum": 92,"sequence": 3,"sectionType": "0","keywordInput": false
}
],"keywordInput": false
},
解决方法
如果您使用 NestedTreeControl
,您可以在此控件上调用 expandDescendants
函数以递归地扩展以给定数据节点为根的子树。
treeControl = new NestedTreeControl<any> (node => node.children);
dataSource = new ArrayDataSource(TREE_DATA);
ngOnInit() {
this.treeControl.dataNodes = TREE_DATA
this.treeControl.expandDescendants(TREE_DATA[1] /* for example */ )
}