#javascript #angular
Вопрос:
Я использую ng2-tree
https://angular2-tree.readme.io/v3.2.0/docs/inputs плагин
Когда я ввожу данные ниже json
, они отображаются как неопределенные
[
{
"value": "helper",
"name": "helper",
"children": []
},
{
"value": "taxi",
"name": "taxi",
"children": []
},
{
"value": "Cake",
"name": "Cake",
"children": [
{
"name": "Chocolate Fudge Cake",
"value": "Chocolate Fudge Cake"
},
{
"name": "Carrot amp; Walnut Cake",
"value": "Carrot amp; Walnut Cake"
}
]
}
]
с приведенным выше json мой результат таков, как undefined
вы можете видеть их по моей ссылке ниже
вот ссылка на stackblitz: https://stackblitz.com/edit/angular-ng2-tree-aouyza?file=app/app.component.ts
Пожалуйста, помогите мне, заранее спасибо!!
Ответ №1:
Ваша структура данных неверна. tree
Компонент, полученный в качестве входного параметра a TreeModel
, и в данный момент у вас есть массив TreeModel
s.
Либо вы настраиваете свою структуру данных и используете родителя TreeModel
, чтобы обернуть ваши текущие данные в качестве своих дочерних, как показано ниже:
tree: TreeModel = {
value: 'Parent Model',
children: [
{
value: 'helper',
name: 'helper',
children: [],
},
{
value: 'taxi',
name: 'taxi',
children: [],
},
{
value: 'Cake',
name: 'Cake',
children: [
{
name: 'Chocolate Fudge Cake',
value: 'Chocolate Fudge Cake',
},
{
name: 'Carrot amp; Walnut Cake',
value: 'Carrot amp; Walnut Cake',
},
],
}
]
};
Или вы перебираете массив в HTML и используете несколько tree
компонентов. Это выглядело бы следующим образом:
<tree [tree]="t" *ngFor="let t of tree"></tree>
Для получения дополнительной информации см. страницу Github в ng2-tree 😉
Обновить:
Вам все еще нужно настроить модель данных так, как я предложил, но вы можете скрыть пустой корневой узел. Для этого вам нужно сделать следующее:
HTML
<tree [tree]="tree" [settings]="{ rootIsVisible: false }"></tree>
Благодаря этому параметру rootless
применяется класс, который скрывает корневой узел empyt, но только в том случае, если вы добавили node_modules/ng2-tree/styles.css
в свой angular.json
или добавили пользовательскую реализацию для этого класса.
Вы можете найти документ с настройками здесь.
Комментарии:
1. Если я хочу 3 основные категории(родители), то с ng2-деревом нет возможности? Так ли это ?
2. теперь он приближается к 3 узлу, но все еще не определен, вы можете увидеть здесь stackblitz.com/edit/angular-ng2-tree-aouyza?file=app/…
3. Потому что вам нужно настроить свою модель так, чтобы она была a
TreeModel
, как я предлагал в начале своего ответа. Если вы это сделаете, это сработает4. я понял вашу точку зрения, но
TreeModel
структура такова{{...},{...},{...}}
, что я не знаю, как динамически создавать такого рода массивыTreeModel
с таким типом[{...},{...},{...}]
.5. Вы можете добавить каждый из ваших объектов в свойство roots
children
. В этом случае только корень будет статичным