0Pricing
Angular Academy · درس

إنشاء Pipes مخصّصة

أنشئوا Pipes قابلة لإعادة الاستخدام للتحويل

إنشاء Pipes مخصّصة درس مجاني في Angular Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Angular Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Angular Academy 4 دروس في المجموع.

لماذا نستخدم Pipes مخصّصة؟

عندما لا تكون Pipes المضمّنة كافية، يمكنك إنشاء Pipe مخصّصة لتغليف منطق تحويل قابل لإعادة الاستخدام في القوالب.

المزيّن @Pipe

الـ Pipe عبارة عن صنف مزيّن باستخدام @Pipe. وتكون الخاصية name هي الاسم الذي تستخدمه في القوالب.

import { Pipe } from "@angular/core";

@Pipe({ name: "exclaim", standalone: true })
export class ExclaimPipe {}

تطبيق PipeTransform

يطبّق صنف Pipe الواجهة PipeTransform، التي تتطلب أسلوبًا واحدًا هو transform.

import { Pipe, PipeTransform } from "@angular/core";

@Pipe({ name: "exclaim", standalone: true })
export class ExclaimPipe implements PipeTransform {
  transform(value: string): string {
    return value + "!";
  }
}

الأسلوب transform

المعامل الأول في transform هو القيمة التي تمر عبر Pipe. وكل ما تعيده يصبح الناتج المعروض.

transform(value: string): string {
  return value.trim();
}

استخدام Pipe الخاصة بك

استورد Pipe إلى مكوّن مستقل، ثم استخدم اسمها في القالب كما تستخدم Pipe مضمّنة.

@Component({
  selector: "app-demo",
  standalone: true,
  imports: [ExclaimPipe],
  template: "<p>{{ 'hi' | exclaim }}</p>"
})
export class DemoComponent {}
// renders: hi!

قبول الوسائط

تصبح المعاملات الإضافية بعد value وسائط لـ Pipe. ويمرّرها المستدعي باستخدام النقطتين.

@Pipe({ name: "repeat", standalone: true })
export class RepeatPipe implements PipeTransform {
  transform(value: string, times: number): string {
    return value.repeat(times);
  }
}
// {{ "ab" | repeat:3 }} -> ababab

القيم الافتراضية للوسائط

امنح الوسائط قيمًا افتراضية حتى يتمكن المستدعون من حذفها. يحافظ ذلك على مرونة Pipe الخاصة بك.

transform(value: string, times: number = 2): string {
  return value.repeat(times);
}
// {{ "ab" | repeat }} -> abab

التعامل مع Null وUndefined

احرص دائمًا على التعامل مع المدخلات المفقودة. وأعد قيمة بديلة مناسبة عندما تكون القيمة null أو undefined.

transform(value: string | null): string {
  if (value == null) return "";
  return value.toUpperCase();
}

مثال على Pipe للاقتطاع

إليك Pipe عملية تختصر النصوص الطويلة وتضيف نقاط الحذف.

@Pipe({ name: "truncate", standalone: true })
export class TruncatePipe implements PipeTransform {
  transform(value: string, limit: number = 20): string {
    if (!value) return "";
    return value.length > limit
      ? value.slice(0, limit) + "..."
      : value;
  }
}

تحديد نوع القيمة المعادة

حدّد نوع القيمة المعادة بحيث يحافظ كل من TypeScript والقوالب على أمان الأنواع. ويمكن لـ Pipe إعادة أي نوع، وليس السلاسل النصية فقط.

@Pipe({ name: "double", standalone: true })
export class DoublePipe implements PipeTransform {
  transform(value: number): number {
    return value * 2;
  }
}

التسجيل في وحدة (NgModule)

إذا كنت تستخدم NgModules بدلًا من المكوّنات المستقلة، فأعلن عن Pipe في declarations وصدّرها إذا لزم الأمر.

@NgModule({
  declarations: [TruncatePipe],
  exports: [TruncatePipe]
})
export class SharedModule {}

تحقق سريع

اختبر مدى فهمك لـ Pipes المخصّصة.

مراجعة

أنشأت Pipe مخصّصة باستخدام @Pipe وPipeTransform، وقبلت وسائط ذات قيم افتراضية، وتعاملت مع null، وسجّلتها في المكوّنات المستقلة أو NgModules.

ستتعلّم في الخطوة التالية الفرق بين Pipes النقية وغير النقية.

الأسئلة الشائعة

هل درس «إنشاء Pipes مخصّصة» مجاني؟

نعم — نص درس «إنشاء Pipes مخصّصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Angular Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Angular Academy 4 دروس في المجموع.

ماذا ستتعلم في «إنشاء Pipes مخصّصة»؟

أنشئوا Pipes قابلة لإعادة الاستخدام للتحويل تتمرن على Angular Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Angular Academy؟

لا تُشترط خبرة سابقة. Angular Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «إنشاء Pipes مخصّصة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Angular Academy هذا؟

نعم. كل درس في Angular Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. استخدام Pipes المضمّنة
  2. تسلسل Pipes وتمرير المعاملات
  3. إنشاء Pipes مخصّصة
  4. Pipes النقية مقابل غير النقية
← العودة إلى Angular Academy