# ngOnInit, ngOnDestroy और ngOnChanges — एंगुलर

Source: https://www.geekswithgeeks.com/hi/angular/ng-lifecycle-hooks

> किसी कंपोनेंट के जीवन के मुख्य पलों पर हुक करें।

## हुक्स क्यों ज़रूरी हैं

Angular विशेष क्षणों पर विशेष मेथड कॉल करता है — निर्माण, अपडेट, विनाश — अगर आपकी क्लास उन्हें implement करती है। इसी तरह सही समय पर सेटअप और क्लीनअप कोड चलता है।

## ngOnInit और ngOnDestroy

`ngOnInit` कंपोनेंट के inputs पहली बार सेट होने के बाद एक बार चलता है — यही शुरुआती डेटा लाने की सामान्य जगह है। `ngOnDestroy` कंपोनेंट हटाए जाने से ठीक पहले चलता है — यहाँ subscriptions और timers साफ़ करें।

```typescript
export class TimerComponent implements OnInit, OnDestroy {
  private intervalId?: ReturnType<typeof setInterval>;

  ngOnInit() {
    this.intervalId = setInterval(() => this.tick(), 1000);
  }

  ngOnDestroy() {
    clearInterval(this.intervalId);
  }

  tick() { /* ... */ }
}
```

## ngOnChanges

जब भी किसी bound `@Input()` का मान बदलता है, `ngOnChanges` चलता है, और इसे पिछला व वर्तमान दोनों मान मिलते हैं।

```typescript
ngOnChanges(changes: SimpleChanges) {
  if (changes['rating']) {
    console.log(changes['rating'].previousValue, changes['rating'].currentValue);
  }
}
```

**Quiz:** किसी timer को साफ़ करना या किसी stream से unsubscribe करना कहाँ करना चाहिए?

- [ ] ngOnInit
- [ ] ngOnChanges
- [x] ngOnDestroy

*Answer:* ngOnDestroy. ngOnDestroy कंपोनेंट हटाए जाने से ठीक पहले चलता है — क्लीनअप के लिए सही जगह।
