العودة إلى الدورة

روابط المضيف (Host Bindings) ومستمعي المضيف (Host Listeners)

مطور Angular الشامل: من الصفر إلى الاحتراف

70. روابط المضيف (Host Bindings) ومستمعي المضيف (Host Listeners)

بينما ترتبط HostBinding و HostListener بالتوجيهات، يمكن استخدامهما أيضاً مباشرة داخل فئة المكون لإدارة الخصائص والأحداث على عنصر المضيف للمكون (<app-my-component>).

1. @HostBinding (تعديل خصائص المضيف)

يُستخدم لإضافة فئات أو سمات أو أنماط برمجياً إلى وسم المكون المخصص نفسه.

مثال: تعيين سمة على عنصر المضيف لتحديد CSS.

typescript @Component({ selector: 'app-selectable-item', template: '...' }) export class SelectableItemComponent { isActive: boolean = false;

// ربط خاصية 'class.active' لعنصر المضيف @HostBinding('class.active') get activeClass() { return this.isActive; }

// ربط قيمة سمة @HostBinding('attr.role') role = 'button';

toggleActive() { this.isActive = !this.isActive; } }

إذا كانت isActive صحيحة، يصبح عنصر المضيف <app-selectable-item class="active">.

2. @HostListener (الاستماع لأحداث المضيف)

يُستخدم للاستماع للأحداث التي تحدث على عنصر المضيف، وهو مفيد للتفاعلات مثل السحب والإفلات أو اختصارات لوحة المفاتيح العامة.

مثال: الاستماع لحدث ضغطة مفتاح عام.

typescript @Component({ /* ... */ }) export class ShortcutComponent {

// الاستماع لحدث 'keydown' في أي مكان على النافذة @HostListener('window:keydown', ['$event']) handleKeydown(event: KeyboardEvent) { if (event.key === 'Escape') { console.log('Escape key pressed globally!'); // إغلاق نافذة مشروطة، على سبيل المثال } } }

تُعد مستمعات المضيف أداة مفيدة للغاية لإنشاء منطق واجهة مستخدم قابل لإعادة الاستخدام يتعلق بالماوس أو لوحة المفاتيح أو إدارة التركيز.