نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر

نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
AN

منهج Angular

دليل مرجعي شامل

كل اللغات
مدرسة البرمجة/منهج Angular /استقبال البيانات المعتمدة على الإشارات

استقبال البيانات المعتمدة على الإشارات

مدخلات الإشاراتsignal inputsدالة input الحديثةلتفاعل الفوريAngular 22.1

جدول مرجعي سريع

1
معيار المقارنة البرمجيةالمدخلات التقليدية (@Input decorator)مدخلات الإشارات الحديثة (input API)
طبيعة المتجر الداخليخاصية عادية تتطلب ngOnChanges لرصد تغيراتهاإشارة فعلية (Signal) يتم قراءتها كدالة ()
التعامل مع القيم المطلوبةتتطلب أحياناً تحققاً يدوياً أو استخدام علامة التعجب (!)تدعم الخصائص الإلزامية بكل سهولة عبر input.required<T>()
التكامل مع الإشارات المحسوبةمنفصلة وتحتاج لإعداد إضافي لربطها بالـ Computed Signalsمتكاملة تماماً وفورية مع الـ computed والـ effect
أداء رصد التغيرات (Change Detection)تعتمد على دورة حياة المكون التقليدية والتحقق العامتحدث الواجهة بدقة متناهية وفورية على مستوى العنصر المتغير فقط

الشرح

ننتقل في هذا الدرس الثالث من الفصل السابع إلى إحدى أهم النقلات النوعية في إصدار Angular 22.1، ألا وهي استقبال البيانات المعتمدة على الإشارات (Signal Inputs). لقد غيرت دالة input() الحديثة طريقة استقبال البيانات من المكونات الأب جذرياً، حيث تحولت المدخلات من خصائص تقليدية صامتة إلى إشارات حقيقية قابلة للقراءة (Read-only Signals)، مما يتيح تكاملاً خارقاً مع الإشارات المحسوبة والآثار، ويوفر أداءً استثنائياً في رصد وتحديث الواجهات

تفصيل فلسفة وعمل مدخلات الإشارات (input)

استدعاء المدخل كدالة برمجية:

عند تعريف مدخل باستخدام input<T>()، فإن القيمة المستقبلة تصبح إشارة. هذا يعني أنك لقراءتها داخل صنف المكون أو القالب، يجب أن تستخدمها كدالة (this.myInput())، مما يطلع أنجولر فوراً على أن هذا المكون يعتمد على هذه القيمة.

المدخلات المطلوبة والافتراضية:

يوفر النظام الحديث صيغتين رئيسيتين: input<T>(defaultValue) للقيم الاختيارية ذات القيمة الافتراضية، و input.required<T>() للمدخلات الإلزامية التي يضمن النظام توفرها وقت الترجمة والتشغيل، مما يمنع الأخطاء البرمجية كلياً.

أمثلة برمجية: صنف الـ TypeScript للمكون الفرعي باستخدام مدخلات الإشارات

المثال الأول: صنف المكون الذي يستقبل البيانات عبر input الحديثة

typescript
1import { Component, input, computed } from '@angular/core';
2
3@Component({
4 selector: 'app-product-signal-card',
5 standalone: true,
6 templateUrl: './product-signal-card.component.html',
7 styleUrl: './product-signal-card.component.css'
8})
9export class ProductSignalCardComponent {
10 // مدخل اختياري بقيمة افتراضية
11 productTitle = input<string>('منتج افتراضي');
12
13 // مدخل إلزامي حديث لا يقبل القسمة على عدم التواجد
14 productPrice = input.required<number>();
15
16 // إشارة محسوبة تعتمد على مدخل الإشارات مباشرة لتوليد قيمة مشتقة
17 formattedPriceInfo = computed(() => {
18 return `السعر الكلي مع الضريبة: ${this.productPrice() * 1.15} ريال`;
19 });
20}

أمثلة برمجية: قالب العرض HTML الخاص بالمكون الفرعي

المثال الثاني: قالب HTML لاستخدام قراءة الإشارات

html
1<div class="signal-card">
2 <h4>عرض بيانات المنتج بالإشارات الحديثة</h4>
3 <p>اسم المنتج: <strong>{{ productTitle() }}</strong></p>
4 <p>السعر الأساسي: <strong>{{ productPrice() }}</strong></p>
5 <p class="tax-info">{{ formattedPriceInfo() }}</p>
6</div>

أمثلة برمجية: ملف التنسيق CSS الخاص بالمكون

المثال الثالث: ملف الـ CSS لتنسيق البطاقة

css
1.signal-card {
2 background: #0f172a;
3 color: #f8fafc;
4 padding: 18px;
5 border-radius: 10px;
6 border: 1px solid #38bdf8;
7 margin-top: 12px;
8}
9
10.tax-info {
11 color: #38bdf8;
12 font-weight: bold;
13 background: #1e293b;
14 padding: 8px;
15 border-radius: 6px;
16 margin-top: 8px;
17}

نصائح احترافية

  • —اعتمد على input() و input.required() في كل مشاريع Angular 22.1 الجديدة!
  • —هذه الطريقة تلغي تماماً الحاجة لاستخدام دوال دورة الحياة المعقدة لمراقبة تغيرات المدخلات، وتجعل دمج البيانات القادمة من الأب مع الإشارات المحسوبة (computed) أمراً سلساً وفعالاً للغاية من حيث استهلاك الذاكرة وسرعة الرندر.

الدرس السابق

استقبال البيانات من المكون الأب باستخدام المدخلات

الدرس التالي

ارسال الأحداث والبيانات للأب باستخدام المخرجات التقليدية

نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر