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

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

المنصة

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

الحساب

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

روابط

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

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

صُنع بـ في مصر

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

منهج Angular

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

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

مقدمة إلى الإشاراتSignals

الإشاراتSignalsإدارة الحالةالتفاعليةAngular 22.1

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

1
ميزة النظام البرمجيالمتغيرات التقليدية (Standard Properties)الإشارات الحديثة (Signals)
طريقة تتبع التغييراتتعتمد على نظام الكشف القديم (Zone.js) لفحص التطبيق بالكاملتتبع دقيق ولحظي يعتمد على اعتماديات البيانات المباشرة
كيفية قراءة القيمةاستدعاء اسم المتغير مباشرة (مثل this.name)استدعاء الإشارة كدالة (مثل this.name())
كيفية تحديث القيمةإسناد القيمة الجديدة مباشرة (this.name = 'New')استخدام دوال مخصصة ومدمجة مثل set أو update
الأداء واستهلاك المواردأقل كفاءة في التطبيقات الضخمة بسبب عمليات الفحص المتكررةفائق السرعة ويوفر أداءً مذهلاً ويقلل من إعادة الرسم

الشرح

ننتقل في هذا الدرس إلى إحدى أهم وأقوى النماذج البرمجية الحديثة في إصدار Angular 22.1، وهي الإشارات (Signals). تُشكل الإشارات نظاماً جديداً كلياً لإدارة الحالة (State Management) وتتبع التغييرات بكفاءة فائقة. على عكس الآليات التقليدية، توفر الإشارات طريقة دقيقة ومباشرة لإعلام نظام التطبيق بأن قيمة معينة قد تغيرت، مما يتيح لأنجولر تحديث الأجزاء المرتبطة بها في الواجهة فوراً ودون الحاجة لفحص شجرة المكونات بالكامل.

تفصيل فلسفة وعمل الإشارات في أنجولر

مفهوم الاعتمادية التلقائية (Reactive Dependency Tracking):

عندما تقوم بقراءة قيمة إشارة داخل قالب الـ HTML أو داخل إشارة محسوبة أخرى، يسجل أنجولر تلقائياً أن هذا العنصر يعتمد على تلك الإشارة. وعند حدوث أي تعديل، يتم تحديث الأجزاء المعتمدة عليها فقط بدلاً من إعادة فحص كل مكونات الصفحة.

فصل القراءة عن التحديث:

لضمان الأمان والوضوح البرمجي، يتم قراءة قيمة الإشارة عن طريق استدعائها كدالة (مثل count())، بينما يتم تعديل قيمتها حصراً عبر الطرق والأساليب البرمجية المدمجة التي توفرها مكتبة أنجولر، مما يمنع التغييرات العشوائية غير المرغوبة.

أمثلة برمجية: إنشاء الإشارات وقراءتها وتحديثها

المثال الأول: إنشاء أول إشارة قابلة للكتابة وعرضها في القالب

typescript
1import { Component, signal } from '@angular/core';
2
3@Component({
4 selector: 'app-signals-intro',
5 standalone: true,
6 template: `
7 <div class="signal-container">
8 <h3>نظام الإشارات الحديث في أنجولر</h3>
9
10 <!-- قراءة قيمة الإشارة عبر استدعائها كدالة -->
11 <p>النتيجة الحالية للإشارة: <strong>{{ score() }}</strong></p>
12
13 <button (click)="updateScore()">زيادة النقاط</button>
14 </div>
15 `
16})
17export class SignalsIntroComponent {
18 // تعريف إشارة برمجية بقيمة ابتدائية رقمية 100
19 score = signal(100);
20
21 updateScore() {
22 // تحديث قيمة الإشارة باستخدام طريقة الـ update
23 this.score.update(currentValue => currentValue + 10);
24 }
25}

أمثلة برمجية: إدارة الحالات النصية المعقدة باستخدام الإشارات

المثال الثاني: ربط الإشارات الحية ببيانات النصوص وحالات التفاعل

typescript
1import { Component, signal } from '@angular/core';
2
3@Component({
4 selector: 'app-user-signal-profile',
5 standalone: true,
6 template: `
7 <div class="profile-box">
8 <!-- قراءة الإشارة النصية والإشارة المنطقية -->
9 <h4>اسم المستخدم: {{ username() }}</h4>
10 <p class="status">الحالة: {{ isLoggedIn() ? 'متصل الآن' : 'غير مسجل الدخول' }}</p>
11
12 <button (click)="toggleLoginStatus()">تبديل حالة الاتصال</button>
13 <button (click)="changeUsername()">تغيير الاسم البرمجي</button>
14 </div>
15 `
16})
17export class UserSignalProfileComponent {
18 // تعريف إشارات متعددة لأنواع بيانات مختلفة
19 username = signal('أحمد مطر');
20 isLoggedIn = signal(true);
21
22 toggleLoginStatus() {
23 // استخدام طريقة set لتغيير القيمة المنطقية مباشرة
24 this.isLoggedIn.set(!this.isLoggedIn());
25 }
26
27 changeUsername() {
28 // تحديث الاسم النصي بقيمة جديدة
29 this.username.set('سارة أحمد المهندس');
30 }
31}

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

  • —اعتمد على الـ Signals كمعيار أساسي لإدارة الحالة المحلية في المكونات المستقلة!
  • —توفر لك الإشارات شيفرة برمجية أسهل بكثير في القراءة والصيانة، وتخلصك تماماً من المشاكل والأعباء المرتبطة بـ Zone.js، مما ينعكس بشكل ثوري ومباشر على سرعة واستجابة تطبيقك.

الدرس السابق

الربط ثنائي الاتجاه وتوجيه ngModel

الدرس التالي

تعريف وتحديث الإشارات القابلة للكتابة

نوفيل

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

المنصة

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

الحساب

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

روابط

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

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

صُنع بـ في مصر