المؤلف:
    إنشاء:2026-06-22آخر تحديث:2026-06-22

    تكامل Angular: توثيق Hook usePathname

    يُرجع الـ hook usePathname مسار المتصفح الحالي مع إزالة جزء اللغة، كإشارة (Signal) من نوع Signal<string> في Angular. يُعد هذا مفيدًا لبناء تنقل (navigation) يعتمد على اللغة — على سبيل المثال، لتحديد عنصر التنقل النشط — دون الحاجة إلى إزالة بادئة اللغة يدويًا.

    استيراد usePathname في Angular

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

    نظرة عامة

    يقوم usePathname بقراءة window.location.pathname، ويزيل بادئة اللغة عبر getPathWithoutLocale، ويُحدّث الإشارة (signal) كلما أطلق المتصفح حدث 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 تحتوي على المسار الحالي بدون بادئة اللغة.

    السلوك

    • إزالة اللغة: يزيل جزء اللغة الأولي (مثل /ar/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 — الأداة المساعدة الأساسية التي يستخدمها هذا الـ hook