0Pricing
Angular Academy · Pelajaran

ngOnDestroy dan Pembersihan

Lepaskan sumber daya saat komponen dihapus.

ngOnDestroy dan Pembersihan adalah pelajaran Angular Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Angular Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Angular Academy mencakup 4 pelajaran total.

Mengapa Pembersihan Penting

Saat komponen dihapus dari DOM, langganan, pengatur waktu, atau pendengar peristiwa yang masih tertinggal dapat menyebabkan kebocoran memori. Kait OnDestroy adalah tempat untuk membersihkannya.

Menerapkan OnDestroy

Terapkan OnDestroy dan tambahkan metode ngOnDestroy. Angular memanggilnya tepat sebelum komponen dihancurkan.

import { Component, OnDestroy } from "@angular/core";

@Component({ selector: "app-demo", template: "" })
export class DemoComponent implements OnDestroy {
  ngOnDestroy(): void {
    console.log("cleaning up");
  }
}

Berhenti Berlangganan dari Observable

Langganan manual harus dihentikan untuk mencegah kebocoran. Simpan Subscription dan panggil unsubscribe di dalam ngOnDestroy.

private sub!: Subscription;

ngOnInit() {
  this.sub = this.timer$.subscribe(t => this.tick = t);
}

ngOnDestroy() {
  this.sub.unsubscribe();
}

Mengelola Beberapa Langganan

Anda dapat mengumpulkan langganan dalam satu Subscription induk dan menghentikan semuanya sekaligus.

private subs = new Subscription();

ngOnInit() {
  this.subs.add(this.a$.subscribe());
  this.subs.add(this.b$.subscribe());
}

ngOnDestroy() {
  this.subs.unsubscribe();
}

Pola takeUntil

Pola RxJS yang populer menggunakan Subject penghancur dengan takeUntil agar aliran selesai secara otomatis ketika komponen dihancurkan.

private destroy$ = new Subject<void>();

ngOnInit() {
  this.data$.pipe(takeUntil(this.destroy$))
    .subscribe(d => this.data = d);
}

ngOnDestroy() {
  this.destroy$.next();
  this.destroy$.complete();
}

Menggunakan takeUntilDestroyed

Angular modern menyediakan takeUntilDestroyed dari @angular/core/rxjs-interop, yang mengaitkan aliran dengan siklus hidup komponen tanpa pembersihan manual.

import { takeUntilDestroyed } from "@angular/core/rxjs-interop";

constructor() {
  this.data$.pipe(takeUntilDestroyed())
    .subscribe(d => this.data = d);
}

Alternatif Pipe async

Menggunakan pipe async di dalam templat sepenuhnya menghindari langganan manual karena pipe tersebut berhenti berlangganan secara otomatis saat komponen dihancurkan.

<p>{{ data$ | async }}</p>

Menghapus Pengatur Waktu dan Interval

Pengatur waktu bawaan tidak dikelola oleh Angular. Hapus pengatur waktu tersebut di dalam ngOnDestroy agar panggilan balik berhenti dijalankan setelah komponen dihancurkan.

private id!: number;

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

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

Menghapus Pendengar Peristiwa

Jika Anda menambahkan pendengar DOM secara manual, hapus pendengar tersebut saat komponen dihancurkan untuk mencegah kebocoran dan penangan yang sudah tidak berlaku.

private onScroll = () => this.handle();

ngOnInit() {
  window.addEventListener("scroll", this.onScroll);
}

ngOnDestroy() {
  window.removeEventListener("scroll", this.onScroll);
}

DestroyRef untuk Panggilan Balik

Anda dapat menginjeksi DestroyRef dan mendaftarkan panggilan balik onDestroy, yang berguna dalam layanan atau konteks non-komponen.

constructor(private destroyRef: DestroyRef) {
  const id = setInterval(() => {}, 1000);
  this.destroyRef.onDestroy(() => clearInterval(id));
}

Apa yang Memicu ngOnDestroy

ngOnDestroy dijalankan ketika komponen dihapus oleh perutean, direktif struktural seperti *ngIf, atau ketika induknya dihancurkan.

Pemeriksaan Singkat

Uji pemahaman Anda tentang OnDestroy.

Ringkasan

Hook OnDestroy membersihkan langganan, pengatur waktu, dan pendengar. Gunakan unsubscribe, pola takeUntil, takeUntilDestroyed, pipa async, atau DestroyRef untuk mencegah kebocoran memori.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “ngOnDestroy dan Pembersihan” gratis?

Ya — teks lengkap “ngOnDestroy dan Pembersihan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Angular Academy, upgrade ke CoddyKit PRO. Kursus Angular Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “ngOnDestroy dan Pembersihan”?

Lepaskan sumber daya saat komponen dihapus. Kamu berlatih Angular Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Angular Academy?

Tidak diperlukan pengalaman sebelumnya. Angular Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “ngOnDestroy dan Pembersihan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Angular Academy ini?

Ya. Setiap pelajaran Angular Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. ngOnInit dan Inisialisasi
  2. ngOnChanges dan Perubahan Input
  3. ngOnDestroy dan Pembersihan
  4. Hook AfterView dan AfterContent
← Kembali ke Angular Academy