9. خطافات دورة حياة المكون
تمر المكونات بدورة حياة: يقوم Angular بإنشائها، وعرضها، والتحقق مما إذا كانت خصائصها المرتبطة بالبيانات قد تغيرت، وأخيراً تدميرها قبل إزالتها من DOM. يوفر Angular خطافات (طرق واجهة) يمكنك تنفيذها للاستفادة من هذه اللحظات الرئيسية.
الخطافات الأكثر شيوعاً
| الخطاف | الواجهة | التوقيت |
|---|---|---|
ngOnInit | OnInit | يتم استدعاؤه مرة واحدة، بعد تهيئة المكون وتعيين الخصائص المرتبطة بالبيانات. مثالي لجلب البيانات. |
ngOnDestroy | OnDestroy | يتم استدعاؤه مرة واحدة، قبل أن يقوم Angular بتدمير المكون مباشرة. مثالي لعمليات التنظيف (إلغاء الاشتراكات، مسح الفواصل الزمنية). |
ngDoCheck | DoCheck | يتم استدعاؤه أثناء كل تشغيل لاكتشاف التغيير، مباشرة بعد ngOnChanges و ngOnInit. |
ngAfterViewInit | AfterViewInit | يتم استدعاؤه مرة واحدة بعد تهيئة عرض المكون وعروض أطفاله. |
تنفيذ OnInit و OnDestroy
نقوم بتنفيذ الواجهة المقابلة لضمان الوفاء بالعقد وتوفير الطريقة المطلوبة.
typescript import { Component, OnInit, OnDestroy } from '@angular/core';
@Component({ ... }) export class ClockComponent implements OnInit, OnDestroy { currentTime: string = ''; private timerInterval: any;
// 1. منطق التهيئة ngOnInit(): void { console.log('ClockComponent initialized. Starting timer.'); this.timerInterval = setInterval(() => { this.currentTime = new Date().toLocaleTimeString(); }, 1000); }
// 2. منطق التنظيف ngOnDestroy(): void { console.log('ClockComponent destroyed. Clearing timer.'); if (this.timerInterval) { clearInterval(this.timerInterval); } } }
يُعد استخدام ngOnDestroy أمراً بالغ الأهمية لمنع تسرب الذاكرة (memory leaks)، خاصة عند التعامل مع الاشتراكات أو الفواصل الزمنية التي تستمر خارج وجود المكون.