Автор:
    БозданиС: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 β€” базовая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ этим Ρ…ΡƒΠΊΠΎΠΌ