Bird
Raised Fist0
Angularframework~5 mins

ngOnDestroy for cleanup in Angular - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the ngOnDestroy lifecycle hook in Angular?
The ngOnDestroy hook is used to perform cleanup just before Angular destroys a component or directive. It helps free resources like subscriptions or timers to prevent memory leaks.
Click to reveal answer
beginner
When exactly is ngOnDestroy called in an Angular component?
ngOnDestroy is called right before Angular removes the component or directive from the DOM, such as when navigating away or conditionally hiding the component.
Click to reveal answer
intermediate
Why should you unsubscribe from Observables inside ngOnDestroy?
Unsubscribing inside ngOnDestroy stops ongoing Observable streams to avoid memory leaks and unexpected behavior after the component is gone.
Click to reveal answer
intermediate
Show a simple example of using ngOnDestroy to clear a timer.
Inside ngOnDestroy, call clearInterval or clearTimeout to stop timers started in the component, preventing them from running after destruction.
Click to reveal answer
beginner
What happens if you forget to implement cleanup in ngOnDestroy?
If cleanup is missed, resources like subscriptions or timers keep running, causing memory leaks and bugs because the component is no longer active but still consuming resources.
Click to reveal answer
What is the main use of ngOnDestroy in Angular?
ATo handle user input events
BTo initialize component data
CTo render the component template
DTo clean up resources before component destruction
When should you unsubscribe from Observables in Angular?
AInside <code>ngOnDestroy</code>
BInside <code>ngOnInit</code>
CInside the constructor
DNever unsubscribe
Which Angular lifecycle hook is called just before a component is removed from the DOM?
AngOnDestroy
BngAfterViewInit
CngOnChanges
DngDoCheck
What could happen if you forget to clear timers in ngOnDestroy?
ATimers stop automatically
BTimers keep running causing unexpected behavior
CAngular throws an error
DNothing happens
Which of these is NOT a reason to use ngOnDestroy?
ATo unsubscribe from Observables
BTo clear intervals or timeouts
CTo fetch data from a server
DTo release resources
Explain why and how you use ngOnDestroy in an Angular component.
Think about what happens when a component is removed and what resources might still be running.
You got /4 concepts.
    Describe a real-life example where forgetting to implement ngOnDestroy cleanup could cause problems.
    Imagine a component that keeps listening to data even after you leave its page.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the ngOnDestroy lifecycle hook in Angular?
      easy
      A. To handle user input events
      B. To initialize component data when it is created
      C. To run cleanup code when a component or directive is removed
      D. To render the component template

      Solution

      1. Step 1: Understand the role of ngOnDestroy

        The ngOnDestroy hook is called when Angular removes a component or directive from the view.
      2. Step 2: Identify its main use

        It is used to clean up resources like timers, subscriptions, or event listeners to avoid memory leaks.
      3. Final Answer:

        To run cleanup code when a component or directive is removed -> Option C
      4. Quick Check:

        ngOnDestroy = cleanup [OK]
      Hint: Remember: ngOnDestroy cleans up before component removal [OK]
      Common Mistakes:
      • Confusing ngOnDestroy with ngOnInit
      • Thinking it initializes data
      • Assuming it handles user events
      2. Which of the following is the correct way to implement ngOnDestroy in an Angular component?
      easy
      A. destroy() { console.log('Component destroyed'); }
      B. ngOnDestroy = () => { console.log('Component destroyed'); }
      C. function ngOnDestroy() { console.log('Component destroyed'); }
      D. ngOnDestroy() { console.log('Component destroyed'); }

      Solution

      1. Step 1: Recall Angular lifecycle hook syntax

        Angular lifecycle hooks are methods inside the component class with exact names like ngOnDestroy().
      2. Step 2: Check method declaration style

        The correct syntax is a method, not an arrow function or standalone function, and must be named exactly ngOnDestroy.
      3. Final Answer:

        ngOnDestroy() { console.log('Component destroyed'); } -> Option D
      4. Quick Check:

        ngOnDestroy method syntax = ngOnDestroy() { console.log('Component destroyed'); } [OK]
      Hint: Use method syntax named exactly ngOnDestroy [OK]
      Common Mistakes:
      • Using arrow functions for lifecycle hooks
      • Naming method incorrectly
      • Defining lifecycle hook outside class
      3. Consider this Angular component code snippet:
      export class TimerComponent implements OnDestroy {
        intervalId = setInterval(() => console.log('tick'), 1000);
      
        ngOnDestroy() {
          clearInterval(this.intervalId);
          console.log('Timer stopped');
        }
      }

      What will happen when this component is removed from the view?
      medium
      A. The interval stops and logs 'Timer stopped' once
      B. An error occurs because clearInterval is not valid here
      C. Nothing happens because ngOnDestroy is not called automatically
      D. The interval keeps running and logs 'tick' every second

      Solution

      1. Step 1: Understand what ngOnDestroy does here

        When the component is removed, Angular calls ngOnDestroy, which clears the interval timer.
      2. Step 2: Effect of clearing the interval

        Clearing the interval stops the repeated 'tick' logs, and the message 'Timer stopped' is logged once.
      3. Final Answer:

        The interval stops and logs 'Timer stopped' once -> Option A
      4. Quick Check:

        ngOnDestroy clears timer = The interval stops and logs 'Timer stopped' once [OK]
      Hint: ngOnDestroy stops timers to prevent leaks [OK]
      Common Mistakes:
      • Thinking interval keeps running after destroy
      • Assuming ngOnDestroy is not called
      • Confusing clearInterval usage
      4. You have this Angular component:
      export class DataComponent implements OnDestroy {
        subscription = this.dataService.getData().subscribe();
      
        ngOnDestroy() {
          this.subscription.unsubscribe;
        }
      }

      What is the problem with this code?
      medium
      A. The unsubscribe method is not called correctly
      B. The subscription is never created
      C. ngOnDestroy is missing the return type
      D. There is no problem; code works fine

      Solution

      1. Step 1: Check how unsubscribe is used

        The code uses this.subscription.unsubscribe; without parentheses, so the method is not actually called.
      2. Step 2: Correct usage of unsubscribe

        It should be this.subscription.unsubscribe(); to properly stop the subscription and avoid memory leaks.
      3. Final Answer:

        The unsubscribe method is not called correctly -> Option A
      4. Quick Check:

        Call unsubscribe() with parentheses [OK]
      Hint: Always call unsubscribe() as a function [OK]
      Common Mistakes:
      • Forgetting parentheses on unsubscribe
      • Assuming unsubscribe is a property
      • Ignoring ngOnDestroy lifecycle
      5. You have a component that subscribes to multiple observables and sets up an event listener:
      export class MultiCleanupComponent implements OnDestroy {
        sub1 = this.service1.getData().subscribe();
        sub2 = this.service2.getData().subscribe();
      
        constructor() {
          window.addEventListener('resize', this.onResize);
        }
      
        onResize() {
          console.log('Window resized');
        }
      
        ngOnDestroy() {
          // What should be done here?
        }
      }

      Which is the best way to clean up all resources in ngOnDestroy?
      hard
      A. Only call this.sub1.unsubscribe(); this.sub2.unsubscribe();
      B. Call this.sub1.unsubscribe(); this.sub2.unsubscribe(); window.removeEventListener('resize', this.onResize);
      C. Only call window.removeEventListener('resize', this.onResize);
      D. No cleanup needed because Angular handles it automatically

      Solution

      1. Step 1: Identify all resources to clean

        The component has two subscriptions and an event listener on the window.
      2. Step 2: Proper cleanup in ngOnDestroy

        To avoid memory leaks, unsubscribe both subscriptions and remove the event listener using removeEventListener.
      3. Final Answer:

        Call this.sub1.unsubscribe(); this.sub2.unsubscribe(); window.removeEventListener('resize', this.onResize); -> Option B
      4. Quick Check:

        Unsubscribe and remove listeners in ngOnDestroy [OK]
      Hint: Clean all subscriptions and listeners in ngOnDestroy [OK]
      Common Mistakes:
      • Forgetting to remove event listeners
      • Only unsubscribing some observables
      • Assuming Angular cleans up automatically
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard