Penulis:
    Dibuat:2026-06-22Terakhir diperbarui:2026-06-22

    Integrasi Angular: Dokumentasi Hook usePathname

    Hook usePathname mengembalikan pathname peramban saat ini dengan segmen lokal dihapus, sebagai Angular Signal<string>. Ini berguna untuk membangun navigasi yang sadar lokal — misalnya, menentukan item navigasi mana yang aktif — tanpa harus menghapus awalan lokal secara manual.

    Mengimpor usePathname di Angular

    typescript
    import { usePathname } from "angular-intlayer";
    

    Ikhtisar

    usePathname membaca window.location.pathname, menghapus awalan lokal melalui getPathWithoutLocale, dan memperbarui sinyal setiap kali peramban memicu peristiwa popstate (navigasi kembali/maju). Ia menggunakan DestroyRef dari Angular untuk membersihkan event listener secara otomatis saat komponen dihancurkan.

    Penggunaan

    src/app/nav-item.component.ts
    import { Component, input } from "@angular/core";
    import { usePathname } from "angular-intlayer";
    
    @Component({
      standalone: true,
      selector: "app-nav-item",
      template: `
        <a
          [href]="href()"
          [attr.aria-current]="pathname() === href() ? 'page' : null"
        >
          {{ label() }}
        </a>
      `,
    })
    export class NavItemComponent {
      readonly href = input.required<string>();
      readonly label = input.required<string>();
    
      readonly pathname = usePathname();
    }
    

    Nilai Kembalian

    Tipe Deskripsi
    Signal<string> Sinyal Angular yang berisi pathname saat ini tanpa awalan lokal.

    Perilaku

    • Penghapusan lokal: Menghapus segmen lokal di depan (mis. /id/dashboard/dashboard).
    • Reaktif: Memperbarui secara otomatis pada peristiwa popstate (navigasi mundur / maju browser).
    • Aman untuk SSR: Mengembalikan "" saat window tidak tersedia.
    • Pembersihan: Listener popstate dihapus melalui DestroyRef.onDestroy saat komponen host dihancurkan.

    Contoh

    src/app/sidebar.component.ts
    import { Component } from "@angular/core";
    import { usePathname } from "angular-intlayer";
    
    @Component({
      standalone: true,
      selector: "app-sidebar",
      template: `
        <nav>
          @for (link of links; track link.href) {
            <a
              [href]="link.href"
              [style.font-weight]="pathname() === link.href ? 'bold' : 'normal'"
            >
              {{ link.label }}
            </a>
          }
        </nav>
      `,
    })
    export class SidebarComponent {
      readonly links = [
        { href: "/dashboard", label: "Dasbor" },
        { href: "/settings", label: "Pengaturan" },
      ];
    
      readonly pathname = usePathname();
    }
    

    Terkait