S.M*_*iya 5 javascript typescript angular-material angular
谁能告诉我,如何在下拉菜单中创建树视图。下拉值将从 REST API 调用中以 json 形式获取,如下所示。子子级也可能包含多一级子级。
我必须在这里进行自动建议,以执行父级别和子级别的过滤器。
VehicleList = [
{
parent: "audi",
child: [{
type: 'G-audiA',
subchild: [{
id: 1,
name: 'type audi A1'
}, {
id: 2,
name: 'type audi A2'
}]
}, {
type: 'G-audiB',
subchild: [{
id: 1,
name: 'type audi B1'
}, {
id: 2,
name: 'type audi B2'
}]
}]
}, {
parent: "bmw",
child: [{
type: 'G-bmwA',
subchild: [{
id: 1,
name: 'type bmw A1'
}, {
id: 2,
name: 'type bmw A2'
}]
}, {
type: 'G-bmwB',
subchild: [{
id: 1,
name: 'type bmw B1'
}, {
id: 2,
name: 'type bmw B2'
}]
}]
}]
Run Code Online (Sandbox Code Playgroud)
任何人的帮助将不胜感激!
小智 5
基于Angular Material Tree文档中的第一个示例,我设法构建了一个内部具有树结构的下拉菜单,如下所示:
显示树的技巧是添加禁用/空选项。我用它作为标签。该树取自他们的示例,因此我根本没有修改它,您可以修改节点结构以匹配您自己的。
为了在下拉列表的标签中显示所选项目,您可以创建一个方法,该方法将返回所选项目的字符串,因为它们的SelectionModel对象具有 selected 属性,该属性将返回所有所选节点。
/** The selection for checklist */
checklistSelection = new SelectionModel<TodoItemFlatNode>(
true /* multiple */
);
Run Code Online (Sandbox Code Playgroud)
为了从树中获取所选项目:
return this.checklistSelection.selected.map(s => s.item).join(",");
Run Code Online (Sandbox Code Playgroud)
对于过滤部分我认为你可以看看这个答案。希望这有帮助!
编辑:如果您选择一个子项,即使未选择其所有子项,父项也会被选中并添加到 SelectionModel 中。如果您不希望出现此行为,请对该函数进行注释descendantsPartiallySelected。这不会检查复选框,因此除非选择了所有子项,否则不会在 SelectionModel 中添加父项
| 归档时间: |
|
| 查看次数: |
9637 次 |
| 最近记录: |