| موضوع الدرس المتقدم | الهدف التقني والهندسي | التقنية أو الآلية المستخدمة في Angular 22.1 |
|---|---|---|
| آلية اكتشاف التغييرات | فهم كيفية فحص المكونات وتحديث الواجهة | Zone.js مقابل Signals الحديثة |
| استراتيجية OnPush | تقليل عدد عمليات الفحص ورفع الأداء | ChangeDetectionStrategy.OnPush |
| التحكم اليدوي بالتغييرات | إيقاف وفحص التغييرات عند الحاجة القصوى | ChangeDetectorRef |
| ربط المكونات الفرعية بالخصائص | تمرير البيانات من الأعلى للأسفل بأمان | خاصية input() الحديثة |
| إرسال الأحداث للأعلى | التواصل العكسي من الأبناء للآباء | خاصية output() الحديثة والمخرجات |
| خاصية Model في الإشارات | تسهيل الربط ثنائي الاتجاه بين المكونات | model() API المبتكرة |
نبدأ في هذا الدرس افتتاح الفصل السادس من المنهج الشامل لإصدار Angular 22.1، والذي خصصناه بالكامل لمناقشة مفاهيم متقدمة في ربط البيانات (Advanced Data Binding Concepts). بعد أن استعرضنا في الفصول السابقة كيفية التعامل مع النماذج والإشارات (Signals)، نتعمق هنا في البنية التحتية وكيفية إدارة تدفق البيانات بين المكونات والأبوين والأبناء بكفاءة عالية واحترافية هندسية تضمن أعلى أداء للتطبيقات الكبرى.
يعتمد أسلوب ربط البيانات المتقدم في إصدارات أنجولر الحديثة على التخلي التدريجي عن الاعتماد العمياء على فحص الشجرة بالكامل، والتوجه نحو آليات دقيقة تعتمد على الإشارات (Signals) ومداخل input ومخارج output المحدثة لتقليل العبء على ذاكرة المتصفح.
تسمح البنية الحديثة بتمرير البيانات والمراجع بمرونة مطلقة دون الحاجة لوحدات تقليدية معقدة، مما يجعل تتبع مسار البيانات واضحاً وسهل الصيانة وقابلاً للاختبار بكفاءة عالية.
| 1 | import { Component, signal } from '@angular/core'; |
| 2 | |
| 3 | @Component({ |
| 4 | selector: 'app-advanced-binding-root', |
| 5 | standalone: true, |
| 6 | template: ` |
| 7 | <div class="advanced-container"> |
| 8 | <h3>إدارة تدفق البيانات المتقدم في الفصل السادس</h3> |
| 9 | <p>الحالة المركزية الحالية: <strong>{{ centralState() }}</strong></p> |
| 10 | |
| 11 | <button (click)="updateCentralState()">تحديث الحالة العامة</button> |
| 12 | </div> |
| 13 | ` |
| 14 | }) |
| 15 | export class AdvancedBindingRootComponent { |
| 16 | // حالة مركزية أساسية تدار عبر الإشارات |
| 17 | centralState = signal('جاهز للربط المتقدم'); |
| 18 | |
| 19 | updateCentralState() { |
| 20 | this.centralState.set('تم تحديث البيانات وتدفقها بنجاح'); |
| 21 | } |
| 22 | } |
| 1 | import { Component, input } from '@angular/core'; |
| 2 | |
| 3 | @Component({ |
| 4 | selector: 'app-child-receiver', |
| 5 | standalone: true, |
| 6 | template: ` |
| 7 | <div class="child-box"> |
| 8 | <h4>المكون الفرعي المستقبل</h4> |
| 9 | <!-- استقبال البيانات المتقدمة عبر input الحديثة --> |
| 10 | <p>البيانات الواردة من المكون الأب: <strong>{{ receivedData() }}</strong></p> |
| 11 | </div> |
| 12 | ` |
| 13 | }) |
| 14 | export class ChildReceiverComponent { |
| 15 | // استقبال البيانات بأمان باستخدام الـ input الحديثة للإشارات |
| 16 | receivedData = input.required<string>(); |
| 17 | } |