En aquest tema, aprendrem a crear i utilitzar serveis a Angular. Els serveis són una part fonamental de qualsevol aplicació Angular, ja que permeten encapsular la lògica de negoci i compartir dades entre diferents components de l'aplicació.
Objectius
- Comprendre què és un servei a Angular.
- Aprendre a crear un servei.
- Injectar i utilitzar un servei en un component.
Què és un servei?
Un servei a Angular és una classe que encapsula una lògica específica que es pot compartir entre diferents components de l'aplicació. Els serveis són ideals per a tasques com:
- Fer sol·licituds HTTP.
- Gestionar dades compartides.
- Implementar lògica de negoci.
Crear un servei
Pas 1: Generar un servei
Angular CLI proporciona una manera fàcil de generar serveis. Utilitzarem la comanda ng generate service
per crear un nou servei.
Aquesta comanda crearà dos fitxers:
my-service.service.ts
: Conté la definició del servei.my-service.service.spec.ts
: Conté les proves unitàries per al servei.
Pas 2: Definir el servei
El fitxer my-service.service.ts
tindrà un aspecte similar a aquest:
import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class MyService { constructor() { } getData(): string { return 'Hello from MyService!'; } }
Explicació del codi
@Injectable({ providedIn: 'root' })
: Aquest decorador indica que el servei es pot injectar a qualsevol part de l'aplicació.providedIn: 'root'
fa que el servei estigui disponible a nivell global.getData()
: Aquest és un mètode simple que retorna una cadena de text. En una aplicació real, aquest mètode podria fer una sol·licitud HTTP o realitzar alguna lògica de negoci.
Utilitzar un servei en un component
Pas 1: Injectar el servei
Per utilitzar el servei en un component, primer hem d'injectar-lo en el constructor del component.
import { Component, OnInit } from '@angular/core'; import { MyService } from './my-service.service'; @Component({ selector: 'app-my-component', templateUrl: './my-component.component.html', styleUrls: ['./my-component.component.css'] }) export class MyComponent implements OnInit { data: string; constructor(private myService: MyService) { } ngOnInit(): void { this.data = this.myService.getData(); } }
Explicació del codi
private myService: MyService
: Aquesta línia injecta el serveiMyService
en el component.ngOnInit()
: Aquest mètode s'executa quan el component s'inicialitza. Aquí, estem cridant el mètodegetData()
del servei i assignant el resultat a la propietatdata
.
Pas 2: Mostrar les dades en la plantilla
Finalment, podem mostrar les dades en la plantilla del component.
Exercici pràctic
Exercici 1: Crear i utilitzar un servei
- Crea un nou servei anomenat
DataService
que tingui un mètodegetData()
que retorni una llista de cadenes de text. - Injecta el servei en un component i mostra les dades en la plantilla del component.
Solució
Pas 1: Crear el servei
Pas 2: Definir el servei
// data.service.ts import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class DataService { constructor() { } getData(): string[] { return ['Data 1', 'Data 2', 'Data 3']; } }
Pas 3: Injectar el servei en un component
// my-component.component.ts import { Component, OnInit } from '@angular/core'; import { DataService } from './data.service'; @Component({ selector: 'app-my-component', templateUrl: './my-component.component.html', styleUrls: ['./my-component.component.css'] }) export class MyComponent implements OnInit { data: string[]; constructor(private dataService: DataService) { } ngOnInit(): void { this.data = this.dataService.getData(); } }
Pas 4: Mostrar les dades en la plantilla
Conclusió
En aquest tema, hem après a crear i utilitzar serveis a Angular. Els serveis són una eina poderosa per encapsular la lògica de negoci i compartir dades entre components. Hem vist com generar un servei, definir-lo i injectar-lo en un component per utilitzar-lo. A més, hem practicat aquests conceptes amb un exercici pràctic. En el proper tema, explorarem la injecció de dependències a Angular.
Curs d'Angular
Mòdul 1: Introducció a Angular
- Què és Angular?
- Configuració de l'entorn de desenvolupament
- Arquitectura d'Angular
- Primera aplicació Angular
Mòdul 2: Components d'Angular
- Comprendre els components
- Crear components
- Plantilles de components
- Estils de components
- Interacció de components
Mòdul 3: Enllaç de dades i directives
- Interpolació i enllaç de propietats
- Enllaç d'esdeveniments
- Enllaç de dades bidireccional
- Directives integrades
- Directives personalitzades
Mòdul 4: Serveis i injecció de dependències
Mòdul 5: Enrutament i navegació
Mòdul 6: Formularis a Angular
Mòdul 7: Client HTTP i observables
- Introducció al client HTTP
- Fer sol·licituds HTTP
- Gestionar respostes HTTP
- Utilitzar observables
- Gestió d'errors
Mòdul 8: Gestió d'estat
- Introducció a la gestió d'estat
- Utilitzar serveis per a la gestió d'estat
- NgRx Store
- NgRx Effects
- NgRx Entity
Mòdul 9: Proves a Angular
- Proves unitàries
- Proves de components
- Proves de serveis
- Proves de cap a cap
- Simulació de dependències
Mòdul 10: Conceptes avançats d'Angular
- Angular Universal
- Optimització del rendiment
- Internacionalització (i18n)
- Tubs personalitzats
- Animacions d'Angular