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

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

المنصة

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

الحساب

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

روابط

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

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

صُنع بـ في مصر

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

منهج Angular

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

كل اللغات
مدرسة البرمجة/منهج Angular /استخدام InjectionToken لتوفير القيم والاعتماديات غير النمطية

استخدام InjectionToken لتوفير القيم والاعتماديات غير النمطية

InjectionTokenNon-Class DependenciesConfiguration ObjectsAngular ArchitectureDI Providers

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

1
وجه المقارنة المعماريةحقن الأصناف التقليدية (Class-based DI)حقن القيم عبر InjectionToken (Non-class DI)
نوع الاعتماد المحقونكلاسات برمجية صريحة تمتلك مُنشئ ومMethods جاهزةقيم بدائية، كائنات إعدادات، إعدادات بيئة العمل (`Environment Configs`)، أو واجهات مجردة
طريقة التعرف وقت التشغيليعتمد أنگولر مباشرة على نوع الصنف (`Class Type`) كمعرف فريد للحقنيتطلب إنشاء مفتاح رمزي فريد (`InjectionToken`) لتعريف وتوجيه القيمة بدقة
المرونة في التغييرمرتبط ببنية الصنف المحدد وثوابته الداخليةمرن للغاية، يتيح لك تغيير القيمة أو كائن الإعدادات دون تعديل بنية المكونات المستهلكة

الشرح

لا يقتصر حقن الاعتماديات على الأصناف (Classes) والخدمات البرمجية فحسب، بل قد تحتاج أحياناً إلى حقن قيم بدائية مثل النصوص، الثوابت، كائنات الإعدادات (Config Objects)، أو الواجهات (Interfaces) التي لا تمتلك تمثيلاً برمجياً كصنف حقيقي وقت التشغيل. هنا يبرز دور InjectionToken كأداة معمارية قوية لربط وتوفير هذه القيم غير النمطية بأمان داخل شجرة الحقن.

تفصيل فلسفة وعمل InjectionToken

جسر الربط بين الأنظمة المجردة والقيم الحقيقية (Tokenization):

بما أن لغة الجافاسكريبت تفقد معلومات الواجهات (Interfaces) وقت التشغيل (Runtime), فإن InjectionToken يوفر معرفاً فريداً وثابتاً يمكن أنگولر من معرفة القيمة المطلوبة وحقنها في المكان الصحيح بكل دقة.

مركزية إعدادات التطبيق (Centralized Configurations):

يُستخدم InjectionToken على نطاق واسع لتمرير إعدادات الخادم (API Base URL)، خيارات الميزات المفعلة، أو مفاتيح الطرف الثالث، مما يسهل عملية اختبار المكونات عبر تمرير قيم وهمية (Mock Values) بكل سهولة.

أمثلة برمجية موسعة: ملفات وتنسيق متنوع للتوضيح العملي

المثال الأول: ملف تعريف الرمز وتوفير القيمة (api-config.token.ts)

typescript
1import { InjectionToken } from '@angular/core';
2
3// تعريف واجهة كائن الإعدادات
4export interface ApiConfig {
5 baseUrl: string;
6 timeout: number;
7}
8
9// إنشاء InjectionToken مع قيمة افتراضية عبر providedIn أو عبر الـ Providers
10export const API_CONFIG_TOKEN = new InjectionToken<ApiConfig>('api.config.token', {
11 providedIn: 'root',
12 factory: () => ({
13 baseUrl: 'https://api.enterprise-angular.22.1.com',
14 timeout: 5000
15 })
16});

المثال الثاني: ملف المكون الذي يستهلك الرمز غير النمطي (token-demo.component.ts)

typescript
1import { Component, inject } from '@angular/core';
2import { CommonModule } from '@angular/common';
3import { API_CONFIG_TOKEN } from './api-config.token';
4
5@Component({
6 selector: 'app-token-demo',
7 standalone: true,
8 imports: [CommonModule],
9 template: `
10 <div class="token-container">
11 <h3>لوحة استخدام InjectionToken للقيم غير النمطية</h3>
12 <div class="config-box">
13 <p><strong>رابط الخادم الأساسي:</strong> {{ config.baseUrl }}</p>
14 <p><strong>مدة الانتظار القصوى:</strong> {{ config.timeout }} ms</p>
15 </div>
16 </div>
17 `,
18 styles: [`
19 .token-container { background: #090d16; color: #fff; padding: 24px; border-radius: 12px; border: 1px solid #1e293b; }
20 .config-box { background: #1e293b; padding: 16px; border-radius: 8px; border: 1px solid #334155; color: #38bdf8; font-weight: bold; }
21 `]
22})
23export class TokenDemoComponent {
24 // حقن القيمة غير النمطية باستخدام InjectionToken ودالة inject الحديثة
25 readonly config = inject(API_CONFIG_TOKEN);
26}

⚠️ تحذير

احذر من تمرير قيم عشوائية بدون تحديد نوع بيانات واضح (Type Safety)! احرص دائماً على ربط InjectionToken بواجهة محددة (Interface) لضمان الحفاظ على أمان الأنواع البرمجية ومنع حدوث أخطاء وقت الترجمة أو التشغيل.

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

  • —استخدم دائمًا InjectionToken لحقن الإعدادات والبيئة المتغيرة (Environment Configs)!
  • —هذا النمط يمنع ربط المكونات بقيم ثابتة مباشرة داخل الكود، ويجعل عملية اختبار التطبيق وتغيير إعداداته عبر البيئات المختلفة (Dev/Production) أمرا يسيراً ومرناً للغاية.

الدرس السابق

حقن الخدمات محلياً على مستوى المكونات

الدرس التالي

المعالجات والتنفيذات الوظيفية المتقدمة

نوفيل

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

المنصة

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

الحساب

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

روابط

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

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

صُنع بـ في مصر