Je suis très nouveau sur Angular. J'ai du travail sur Angular.
J'ai besoin de lier la liste déroulante Nested pour les Json
données provenant du serveur en appelant Rest Api.
Les données ont un attribut LgLevel
, Spécifie le niveau dans la hiérarchie du groupe. Parent aura level=0
, Immédiat Child=1
, Grandchild=2
etc. Child
et Grandchild
a un ParentLocationGroup
champ, qui montre à l'intérieur de quel menu parent, le menu enfant sera là.
Ce sont mes json
données. J'ai d'énormes données mais je ne les montre pas toutes.
{
"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"
}
}
Je l'ai essayé de développer mais j'ai trouvé tous les exemples de bootstrap
données statiques dans un html
fichier et un CSS
fichier séparé qui m'ont été compliqués.
Je veux le faire dynamiquement en utilisant TypeScript
. Comment puis-je commencer à y travailler.
la source
XML
et nonJSON
. Pouvez-vous également ajouter tout ce que vous avez essayé? Peut-être plus en détail l'approche que vous avez adoptée.html
code qui a des listes imbriquées statiques. J'essaierai de le modifier et publierai desJson
données. Tu ne vas pas aimer ce que j'ai essayé :)html
fichier. J'ai l'idée de le démarrer. Tu peux m'aider.Réponses:
Il s'agit d'un exemple codé dont vous avez besoin selon les données de niveau imbriqué de vos données json. Vous pouvez maintenant boucler les données json formatées dans le DOM en utilisant les données du modèle . J'espère que cela vous aidera à créer une liste déroulante à plusieurs niveaux
Fichier HTML
Selon les données de réponse de votre serveur, organisez les données du modèle. Le format json de réponse a été modifié ( __text en #text )
la source
getData
nulle part. Pourriez-vous s'il vous plaît vérifier votre code un et ajouter les ouvertures et fermetures.Il semble que vous ayez déjà une autre réponse qui réponde à vos besoins. Mais cette solution m'a pris du temps à trouver. J'ai donc décidé de le publier de toute façon.
L'extrait de code ci-dessous est utilisé pour construire la structure arborescente des données hiérarchiques parent-enfant:
Les données agrégées sont transmises en entrée à un
dropdown
composant qui les rend sous forme de menu déroulant à plusieurs niveaux.Cette solution fonctionnera censément pour n'importe quel niveau d'enfants. Le
dropdown
composant peut être modifié pour changer la façon dont les données sont rendues selon vos besoins.j'ai pris le
html
etcss
pour le menu déroulant à plusieurs niveaux à partir d'ici:https://phppot.com/css/multilevel-dropdown-menu-with-pure-css/
Le code pour fermer le menu déroulant lorsque vous cliquez dessus en dehors de cette réponse:
https: //stackoverflow.com/a/59234391/9262488
Espérant que ceci puisse t'être utile.
la source
Pourquoi ne pas créer un composant arborescent et y lier des entrées de manière récursive?
La solution proposée est
O(n)
.Concevez d'abord le modèle de données - il doit s'agir d'une structure arborescente:
Ensuite, agrégez vos données dans le composant de niveau supérieur (ou mieux encore - dans votre service de données; vous devriez pouvoir résumer cela assez facilement):
Et créez le composant flyout dynamique récurrent:
La solution n'est pas testée mais elle vous orientera dans la bonne direction ...
Espérons que cela aide un peu :-)
la source