PrimeNGを使用してTreeNodeオブジェクトにマップするロールオブジェクトをツリーに表示しました。 ロールオブジェクトは、ツリーノードオブジェクトは、以下の構造を有するようなもの(同様に画像に示すように)Typescriptで別のオブジェクトにマップする
role: [
id: ....
name: ....
description: ....
roles[]: .....
]
ある:
{
"data":
[
{
"label": "Documents",
"data": "Documents Folder",
"expandedIcon": "fa-folder-open",
"collapsedIcon": "fa-folder",
"children": [{
"label": "Work",
"data": "Work Folder",
"expandedIcon": "fa-folder-open",
"collapsedIcon": "fa-folder",
"children": [{"label": "Expenses.doc", "icon": "fa-file-word-o", "data": "Expenses Document"}, {"label": "Resume.doc", "icon": "fa-file-word-o", "data": "Resume Document"}]
},
{
"label": "Home",
"data": "Home Folder",
"expandedIcon": "fa-folder-open",
"collapsedIcon": "fa-folder",
"children": [{"label": "Invoices.txt", "icon": "fa-file-word-o", "data": "Invoices for this month"}]
}]
},
{
"label": "Pictures",
"data": "Pictures Folder",
"expandedIcon": "fa-folder-open",
"collapsedIcon": "fa-folder",
"children": [
{"label": "barcelona.jpg", "icon": "fa-file-image-o", "data": "Barcelona Photo"},
{"label": "logo.jpg", "icon": "fa-file-image-o", "data": "PrimeFaces Logo"},
{"label": "primeui.png", "icon": "fa-file-image-o", "data": "PrimeUI Logo"}]
},
{
"label": "Movies",
"data": "Movies Folder",
"expandedIcon": "fa-folder-open",
"collapsedIcon": "fa-folder",
"children": [{
"label": "Al Pacino",
"data": "Pacino Movies",
"children": [{"label": "Scarface", "icon": "fa-file-video-o", "data": "Scarface Movie"}, {"label": "Serpico", "icon": "fa-file-video-o", "data": "Serpico Movie"}]
},
{
"label": "Robert De Niro",
"data": "De Niro Movies",
"children": [{"label": "Goodfellas", "icon": "fa-file-video-o", "data": "Goodfellas Movie"}, {"label": "Untouchables", "icon": "fa-file-video-o", "data": "Untouchables Movie"}]
}]
}
]
}
data.roles.forEach((role, index) => {
//this.roleTree.label = role.Name;
//this.roleTree.data = role.ID;
let treeNode: TreeNode = {
label: role.Name,
data: role
}
this.treeNodes.push(treeNode);
console.log(role);
console.log(index);
});
しかし、このコードは複雑すぎるようです'role'の 'roles'をtreeNodeの 'children'にマップします。私はthisのようないくつかの例を見てきましたが、同じフィールド名をマッピングしています。
私は文字を新しくしました。私のフィールド名(例:名前)をロールの 'ラベル'にマッピングするように指定することで、ロール付きのロールオブジェクトを子と一緒にtreeNodeに変換できますか?
コード例は高く評価されます。
あなたのロールタイプや 'TreeNode'タイプに' interface'がありますか? 'TreeNode'は' data'プロパティの任意のオブジェクトを許可し、 'children'は' TreeNode'の配列ですか? – jcalz
と 'roles'プロパティの要素の型は何ですか?彼らは 'role'オブジェクトと同じ型ですか? – jcalz