Я очень новичок в Angular. У меня есть работа над Angular.
Мне нужно связать Nested выпадающий список для Json
данных, поступающих с сервера, вызвав Rest Api.
Данные имеют один атрибут LgLevel
, Определяет уровень в иерархии группы. Родитель будет иметь level=0
, Immediate Child=1
, Grandchild=2
и так далее. Child
и Grandchild
имеет ParentLocationGroup
поле, которое показывает, в каком родительском меню будет находиться дочернее меню.
Это мои json
данные. У меня есть огромные данные, но я не показываю все.
{
"ArrayOfLocationGroup": {
"LocationGroup": [
{
"Id": "628",
"Name": "TEST1",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources"
},
"ParentLocationGroup": {
"_uuid": "bdce4396-9c60-4831-90f2-6f793becb362",
"__text": "570"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "0"
}
},
{
"Id": "630",
"Name": "TEST2",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "PAM-TEST"
},
"ParentLocationGroup": {
"_uuid": "894055b6-b132-4dc2-a12a-971ecc0c7224",
"__text": "628"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "1"
}
},
{
"Id": "631",
"Name": "TEST3",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "PAA-TEST"
},
"ParentLocationGroup": {
"_uuid": "894055b6-b132-4dc2-a12a-971ecc0c7224",
"__text": "628"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "1"
}
},
{
"Id": "697",
"Name": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "TEST4"
},
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "PAE-TEST"
},
"ParentLocationGroup": {
"_uuid": "894055b6-b132-4dc2-a12a-971ecc0c7224",
"__text": "628"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "1"
}
},
{
"Id": "700",
"Name": "TEST5",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "cuba"
},
"ParentLocationGroup": {
"_uuid": "704af4cf-9feb-4f1b-aa00-d1c7926f7901",
"__text": "694"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "2"
}
},
{
"Id": "706",
"Name": "TEST5",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "VOIP-Test"
},
"ParentLocationGroup": {
"_uuid": "894055b6-b132-4dc2-a12a-971ecc0c7224",
"__text": "628"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "1"
}
},
{
"Id": "718",
"Name": "TEST7",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources"
},
"ParentLocationGroup": {
"_uuid": "894055b6-b132-4dc2-a12a-971ecc0c7224",
"__text": "628"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "1"
}
},
{
"Id": "719",
"Name": "TEST8",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "MEM_RS"
},
"ParentLocationGroup": {
"_uuid": "52073e2b-48b5-41a9-9c2b-d793835cf285",
"__text": "718"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "2"
}
},
{
"Id": "752",
"Name": "TEST9",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "ELDIT"
},
"ParentLocationGroup": {
"_uuid": "894055b6-b132-4dc2-a12a-971ecc0c7224",
"__text": "628"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "1"
}
},
{
"Id": "753",
"Name": "TEST10",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "GXYA"
},
"ParentLocationGroup": {
"_uuid": "52073e2b-48b5-41a9-9c2b-d793835cf285",
"__text": "718"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "2"
}
},
{
"Id": "760",
"Name": "TEST11",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "STAGE2"
},
"ParentLocationGroup": {
"_uuid": "894055b6-b132-4dc2-a12a-971ecc0c7224",
"__text": "628"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "1"
}
},
{
"Id": "761",
"Name": "TEST12",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "INIT"
},
"ParentLocationGroup": {
"_uuid": "894055b6-b132-4dc2-a12a-971ecc0c7224",
"__text": "628"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "1"
}
},
{
"Id": "762",
"Name": "TEST13",
"GroupId": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "USIT"
},
"ParentLocationGroup": {
"_uuid": "894055b6-b132-4dc2-a12a-971ecc0c7224",
"__text": "628"
},
"LgLevel": {
"_xmlns": "http://www.air-watch.com/servicemodel/resources",
"__text": "1"
}
}
],
"_xmlns:xsd": "http://www.w3.org/2001/XMLSchema"
}
}
Я пытался его разработать, но я нашел все примеры bootstrap
со статическими данными в html
файле и отдельном CSS
файле, который был сложным для меня.
Я хочу сделать это динамически, используя TypeScript
. Как я могу начать работать над этим.
html
angular
typescript
Арвинд Чоурасия
источник
источник
XML
и нетJSON
. Можете ли вы также добавить все, что вы пробовали? Может быть, более подробно подход, который вы приняли.html
код, который имеет статические вложенные списки. Я постараюсь отредактировать его и выложуJson
данные. Тебе не понравится то, что я попробовал :)html
файле. У меня есть идея, чтобы начать это. Вы можете помочь мне.Ответы:
Это образец кода, который вам нужен согласно данным вложенного уровня из ваших данных JSON. Теперь вы можете зацикливать отформатированные данные JSON в DOM, используя данные модели . Я надеюсь, что это поможет вам создать многоуровневый раскрывающийся список
HTML-файл
Согласно данным ответа вашего сервера организовать данные модели. Формат ответа json изменен ( __text на #text )
источник
getData
нигде. Не могли бы вы проверить свой код один и добавить открытия и закрытия.Кажется, у вас уже есть другой ответ, который отвечает вашим требованиям. Но это решение заняло у меня некоторое время, чтобы придумать. Поэтому решил опубликовать его в любом случае.
Приведенный ниже фрагмент кода используется для построения древовидной структуры иерархических данных parent-child:
Агрегированные данные передаются в качестве входных данных
dropdown
компоненту, который представляет их как многоуровневое раскрывающееся меню.Это решение, предположительно, подойдет для любого уровня детей.
dropdown
Компонент может быть изменен , чтобы изменить способ данные визуализируются в соответствии с вашими требованиями.Я взял
html
иcss
для многоуровневого выпадающего меню отсюда:https://phppot.com/css/multilevel-dropdown-menu-with-pure-css/
Код для закрытия выпадающего меню при нажатии вне этого ответа:
https: //stackoverflow.com/a/59234391/9262488
Надеюсь, вы найдете это полезным.
источник
Почему бы не создать компонент дерева и рекурсивно привязать входы к нему?
Предлагаемое решение
O(n)
.Сначала спроектируйте модель данных - это должна быть структура дерева-узла:
Затем объедините ваши данные в компоненте верхнего уровня (или, что еще лучше, в вашем сервисе данных; у вас должно получиться достаточно легко это абстрагировать):
И создайте рекуррентный динамический всплывающий компонент:
Решение не проверено, но оно укажет вам правильное направление ...
Надеюсь, это немного поможет :-)
источник