البرمجة

تحويل JSON إلى قائمة غير مرتبة باستخدام Angular 2 ngFor

في البداية، يجب أن نلاحظ أن Angular 2 تم تطويره باستخدام TypeScript، مما يجعله يحتوي على ميزات تقنية حديثة وقوية. لتحقيق هذا الهدف، يمكننا كتابة مكون (Component) يتيح لنا تحويل البيانات من هيكل JSON إلى قائمة غير مرتبة (unordered list) باستخدام ngFor.

فيما يلي مثال لمكون Angular 2 يقوم بتحويل هيكل JSON إلى قائمة غير مرتبة باستخدام ngFor:

typescript
import { Component, Input } from '@angular/core'; @Component({ selector: 'json-tree', template: `
  • {{ node.name }}
`
, }) export class JsonTreeComponent { @Input() nodes: any[]; }

في هذا المثال، يقوم المكون بتكرار العناصر باستخدام ngFor، وعند وجود فروع فرعية (subnodes)، يتم استدعاء نفس المكون بشكل متكرر بواسطة لتكرار الهيكل بشكل تكراري.

لدمج هذا المكون في تطبيق Angular، يجب عليك تضمينه في وحدة التطبيق واستخدامه في القالب الخاص بك بشكل مناسب.

typescript
import { Component } from '@angular/core'; @Component({ selector: 'app-root', template: `

Angular 2 JSON Tree

`
, }) export class AppComponent { jsonTreeData = [ { name: "parent1", subnodes: [] }, { name: "parent2", subnodes: [{ name: "parent2_child1", subnodes: [] }], }, { name: "parent3", subnodes: [ { name: "parent3_child1", subnodes: [{ name: "parent3_child1_child1", subnodes: [] }], }, ], }, ]; }

تذكر أن يتم استيراد واستخدام JsonTreeComponent في وحدة التطبيق الخاصة بك.

باستخدام هذا الحلا، يمكنك تحقيق تحويل JSON إلى قائمة غير مرتبة باستخدام تقنيات Angular 2 الحديثة والفعّالة.

المزيد من المعلومات

بالطبع، دعونا نوسع على الحلا السابق بمزيد من المعلومات حول كيفية تخصيص المكون وتحسين أدائه، بالإضافة إلى بعض النصائح الإضافية لتحسين تجربة المستخدم:

  1. تخصيص المكون:
    يمكنك تحسين المظهر والسلوك الخاص بالمكون عن طريق إضافة المزيد من السمات والأساليب الخاصة به. يمكنك أيضًا تضمين رموز أيقونات أو ألوان لتحسين تمثيل البيانات.

    typescript
    @Component({ selector: 'json-tree', template: `
    • {{ node.name }}
    `
    , styles: [` .json-tree { list-style-type: none; padding-left: 20px; } .node-name { font-weight: bold; color: #336699; /* يمكنك تخصيص اللون حسب تفضيلاتك */ } `], })
  2. تحسين الأداء:
    قد يكون لديك بيانات كبيرة، لذا يمكن تحسين الأداء باستخدام “تحميل التأخير” (Lazy Loading)، حيث يتم تحميل الفروع الفرعية فقط عند الطلب. يمكنك أيضًا استخدام trackBy مع ngFor لتحسين أداء القائمة.

    typescript
    @Component({ // ... (الجزء الآخر من المكون) }) export class JsonTreeComponent { @Input() nodes: any[]; trackByFn(index: number, item: any): any { return item.name; // يمكنك استخدام معرف فريد هنا } }
    html
    <json-tree [nodes]="jsonTreeData" (activate)="onNodeActivated($event)">json-tree>
  3. إضافة تفاعل المستخدم:
    يمكنك تحسين تجربة المستخدم عن طريق إضافة تفاعلات، مثل إطوار الانتقال أو عرض معلومات إضافية عند النقر على العناصر. يمكنك إضافة مصفوفة إشارات (Event Emitters) للتفاعل مع العناصر في التكوين.

    typescript
    @Component({ // ... (الجزء الآخر من المكون) outputs: ['activate'], }) export class JsonTreeComponent { @Input() nodes: any[]; @Output() activate: EventEmitter<any> = new EventEmitter(); onNodeClick(node: any): void { this.activate.emit(node); } }
    html
    <li *ngFor="let node of nodes" (click)="onNodeClick(node)"> li>

باستخدام هذه الإضافات والتحسينات، يمكنك تكامل المكون بشكل أفضل في تطبيق Angular الخاص بك وتحسين تجربة المستخدم وأداء التطبيق.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!