Soy muy nuevo en Angular. Tengo trabajo en Angular.
Necesito vincular la lista desplegable Anidada para los Json
datos que provienen del servidor llamando a Rest Api.
Los datos tienen un atributo LgLevel
, especifica el nivel en la jerarquía del grupo. Los padres tendrán level=0
, Inmediato Child=1
, Grandchild=2
y así sucesivamente. Child
y Grandchild
tiene un ParentLocationGroup
campo, que muestra dentro de qué menú principal, allí estará el menú secundario.
Esta es mi json
información. Tengo una gran cantidad de datos pero no se muestran todos.
{
"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"
}
}
Lo intenté desarrollar, pero encontré todos los ejemplos de bootstrap
datos estáticos en un html
archivo y un CSS
archivo separado que me resultó complicado.
Quiero hacerlo dinámicamente usando TypeScript
. ¿Cómo puedo comenzar a trabajar en ello?
fuente
XML
y noJSON
. ¿Puedes agregar lo que hayas probado? Quizás con más detalles el enfoque que adoptó.html
código que tiene listas anidadas estáticas. Intentaré editarlo y publicaréJson
datos. No te va a gustar lo que he probado :)html
archivo. Tengo idea de comenzarlo. Puedes ayudarmeRespuestas:
Esta es una muestra codificada que necesita según los datos de nivel anidados de sus datos json. Ahora puede realizar un bucle de los datos json formateados en el DOM utilizando datos del modelo . Espero que esto te ayude a crear un menú desplegable de varios niveles
Archivo html
Según los datos de respuesta de su servidor, organice los datos del modelo. El formato json de respuesta cambió ( __text a #text )
fuente
getData
ningún lado. ¿Podría por favor verificar su código uno y agregar aperturas y cierres?Parece que ya tiene otra respuesta que cumple con sus requisitos. Pero esta solución me llevó algún tiempo. Así que decidí publicarlo de todos modos.
El siguiente fragmento de código se utiliza para construir la estructura de árbol de los datos jerárquicos padre-hijo:
Los datos agregados se pasan como entrada a un
dropdown
componente que los representa como un menú desplegable multinivel.Esta solución supuestamente funcionará para cualquier nivel de niños. El
dropdown
componente se puede modificar para cambiar la forma en que se representan los datos según sus requisitos.Tomé el
html
ycss
para el menú desplegable de varios niveles desde aquí:https://phppot.com/css/multilevel-dropdown-menu-with-pure-css/
El código para cerrar el menú desplegable del menú cuando se hace clic fuera de esta respuesta:
https: //stackoverflow.com/a/59234391/9262488
Espero que encuentres esto útil.
fuente
¿Por qué no crear un componente de árbol y vincular entradas recursivamente?
La solución propuesta es
O(n)
.Primero diseñe el modelo de datos: debe ser una estructura de árbol-nodo:
Luego, agregue sus datos en el componente de nivel superior (o incluso mejor, en su servicio de datos; debería poder abstraerlo con la suficiente facilidad):
Y cree el componente flotante dinámico recurrente:
La solución no se prueba, pero lo guiará en la dirección correcta ...
Espero que esto ayude un poco :-)
fuente