Автор:
    Создание: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, содержащий текущий путь без префикса локали.

    Поведение

    • Удаление локали: Удаляет начальный сегмент локали (например, /ru/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 — базовая утилита, используемая этим хуком