Автор:
    Дата створення:2026-06-22Останнє оновлення:2026-06-22

    Інтеграция Angular: Документація хука usePathname

    Хук usePathname повертає поточний шлях браузера з видаленим сегментом локалі як Angular Signal<string>. Це корисно для створення навігації з урахуванням локалі — наприклад, для визначення активного елемента навігації — без необхідності вручну видаляти префікс локалі.

    Імпорт usePathname в Angular

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

    Огляд

    usePathname зчитує window.location.pathname, видаляє префікс локалі через getPathWithoutLocale та оновлює сигнал щоразу, коли браузер викликає подію popstate (навігація назад/вперед). Він використовує DestroyRef Angular для автоматичного очищення слухача подій під час знищення компонента.

    Використання

    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();
    }
    

    Значення, що повертається

    Тип Опис
    Signal<string> Сигнал Angular, що містить поточний шлях без префікса локалі.

    Поведінка

    • Видалення локалі: Видаляє початковий сегмент локалі (наприклад, /uk/dashboard/dashboard).
    • Реактивність: Автоматично оновлюється під час подій popstate (навігація браузера назад / вперед).
    • Безпека для SSR: Повертає "", коли window недоступне.
    • Очищення: Слухач popstate видаляється через DestroyRef.onDestroy під час знищення хост-компонента.

    Приклад

    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: "Панель приладів" },
        { href: "/settings", label: "Налаштування" },
      ];
    
      readonly pathname = usePathname();
    }
    

    Пов'язані ресурси

    • useLocale — поточна локаль + перемикач локалі
    • getPathWithoutLocale — базова утиліта, яку використовує цей хук