العودة إلى الدورة

مقدمة في الخدمات (Services)

مطور Angular الشامل: من الصفر إلى الاحتراف

22. مقدمة في الخدمات (Services)

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

المُزخرف @Injectable()

يجب أن تكون أي فئة يمكن أن يديرها حاقن التبعية في Angular مُزخرفة بـ @Injectable().

استخدم CLI لتوليد خدمة:

bash ng generate service data/user // ينشئ src/app/data/user.service.ts

مثال على الخدمة: المُسجِّل (Logger)

typescript import { Injectable } from '@angular/core';

@Injectable({ // البيانات الوصفية providedIn (منذ Angular 6+) providedIn: 'root' }) export class LoggerService { private logs: string[] = [];

log(message: string) { const timestamp = new Date().toISOString(); const fullMessage = [${timestamp}] ${message}; console.log(fullMessage); this.logs.push(fullMessage); }

getLogs(): string[] { return this.logs; } }

خاصية providedIn: 'root'

افتراضياً، تستخدم الخدمات المولَّدة providedIn: 'root'. يؤدي هذا إلى تهيئة الخدمة لتكون 'فردية' (singleton) (أي يوجد مثيل واحد فقط) عبر التطبيق بأكمله. هذه هي الطريقة الحديثة والمفضلة لتوفير الخدمات على مستوى التطبيق، مما يلغي الحاجة إلى سردها صراحةً في مصفوفة providers في AppModule.