Saya sangat baru di Angular. Saya punya beberapa pekerjaan di Angular.
Saya perlu mengikat daftar dropdown Nested untuk Json
data yang berasal dari server dengan memanggil Rest Api.
Data memiliki satu atribut LgLevel
, Menentukan level dalam hierarki grup. Induk akan memiliki level=0
, Segera Child=1
, Grandchild=2
dan sebagainya. Child
dan Grandchild
memiliki ParentLocationGroup
bidang, yang menunjukkan di dalam menu induk mana, menu anak akan ada di sana.
Ini json
data saya . Saya memiliki data yang sangat besar tetapi tidak menunjukkan semuanya.
{
"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"
}
}
Saya telah mencoba mengembangkannya tetapi saya menemukan semua contoh bootstrap
data statis dalam html
file dan CSS
file terpisah yang rumit bagi saya.
Saya ingin melakukannya secara dinamis menggunakan TypeScript
. Bagaimana saya bisa mulai mengerjakannya.
sumber
XML
dan tidakJSON
. Bisakah Anda menambahkan apa pun yang Anda coba? Mungkin secara lebih rinci pendekatan yang Anda adopsi.html
kode yang memiliki daftar bersarang statis. Saya akan mencoba mengeditnya dan akan mempostingJson
data. Anda tidak akan menyukai apa yang saya coba :)html
file. Saya punya ide untuk memulainya. Anda dapat membantu saya.Jawaban:
Ini adalah kode sampel yang Anda butuhkan sesuai data tingkat bersarang dari data json Anda. Sekarang Anda dapat untuk loop data json yang diformat di DOM menggunakan data model . Saya harap ini akan membantu Anda membuat drop-down multi-level
File Html
Sesuai data respons server Anda, atur data model. Format respons json berubah ( __teks ke #teks )
sumber
getData
mana pun. Bisakah Anda memeriksa kode Anda dan menambahkan pembukaan dan penutupan.Tampaknya Anda sudah memiliki jawaban lain yang memenuhi persyaratan Anda. Tetapi solusi ini kadang-kadang perlu saya pikirkan. Jadi memutuskan untuk mempostingnya.
Cuplikan kode di bawah ini digunakan untuk membuat struktur pohon seperti dari data hierarki orangtua-anak:
Data agregat dilewatkan sebagai input ke
dropdown
komponen yang menjadikannya sebagai menu tarik turun bertingkat.Solusi ini konon akan bekerja untuk semua tingkatan anak. The
dropdown
komponen dapat dimodifikasi untuk mengubah cara data tersebut diberikan sesuai kebutuhan Anda.Saya mengambil
html
dancss
untuk menu tarik turun bertingkat dari sini:https://phppot.com/css/multilevel-dropdown-menu-with-pure-css/
Kode untuk menutup menu dropdown ketika diklik di luar dari jawaban ini:
https: //stackoverflow.com/a/59234391/9262488
Semoga Anda menemukan ini berguna.
sumber
Mengapa tidak membuat komponen hierarki dan mengikat input secara rekursif?
Solusi yang diusulkan adalah
O(n)
.Pertama-tama, desain model data - harus berupa struktur simpul pohon:
Kemudian agregat data Anda di komponen tingkat atas (atau bahkan lebih baik - dalam layanan data Anda; Anda harus dapat mengabstraksi dengan cukup mudah):
Dan buat komponen flyout dinamis berulang:
Solusinya tidak diuji tetapi akan mengarahkan Anda ke arah yang benar ...
Semoga ini bisa membantu sedikit :-)
sumber