Què són els serveis a Angular?
Els serveis a Angular són classes que encapsulen la lògica de negoci, la lògica de dades o qualsevol altra funcionalitat que es pugui compartir entre diferents components de l'aplicació. Els serveis permeten que el codi sigui més modular, reutilitzable i fàcil de mantenir.
Característiques clau dels serveis:
- Reutilitzables: Un servei pot ser utilitzat per múltiples components.
- Encapsulació: Permeten encapsular la lògica de negoci i les operacions de dades.
- Injecció de dependències: Angular proporciona un mecanisme per injectar serveis en components o altres serveis.
Crear un servei a Angular
Pas 1: Crear el servei
Per crear un servei, podem utilitzar l'Angular CLI. Executa la següent comanda en el terminal:
Això generarà dos fitxers:
my-service.service.ts
my-service.service.spec.ts
(per a proves unitàries)
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() { return 'Hello from MyService!'; } }
Explicació del codi:
- @Injectable: Aquest decorador indica que la classe pot ser injectada com una dependència. L'opció
providedIn: 'root'
fa que el servei estigui disponible a tota l'aplicació. - getData(): Un mètode simple que retorna una cadena de text.
Utilitzar un servei en un component
Pas 1: Injectar el servei
Per utilitzar el servei en un component, primer cal injectar-lo en el constructor del component. Suposem que tenim un component anomenat app.component.ts
.
import { Component, OnInit } from '@angular/core'; import { MyService } from './my-service.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent implements OnInit { data: string; constructor(private myService: MyService) { } ngOnInit() { this.data = this.myService.getData(); } }
Explicació del codi:
- constructor(private myService: MyService): Injecta el servei
MyService
en el component. - ngOnInit(): En el cicle de vida del component, el mètode
ngOnInit
s'utilitza per inicialitzar la propietatdata
amb el valor retornat pel servei.
Pas 2: Mostrar les dades en la plantilla
Finalment, podem mostrar les dades en la plantilla del component app.component.html
.
Exercici pràctic
Objectiu:
Crear un servei que proporcioni una llista d'elements i utilitzar aquest servei en un component per mostrar la llista.
Passos:
-
Crear el servei:
ng generate service item
-
Definir el servei (
item.service.ts
):import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class ItemService { constructor() { } getItems() { return ['Item 1', 'Item 2', 'Item 3']; } }
-
Injectar i utilitzar el servei en un component (
app.component.ts
):import { Component, OnInit } from '@angular/core'; import { ItemService } from './item.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent implements OnInit { items: string[]; constructor(private itemService: ItemService) { } ngOnInit() { this.items = this.itemService.getItems(); } }
-
Mostrar la llista en la plantilla (
app.component.html
):<ul> <li *ngFor="let item of items">{{ item }}</li> </ul>
Solució:
Si has seguit els passos correctament, hauries de veure una llista d'elements mostrada en la pàgina principal de l'aplicació.
Resum
En aquesta secció, hem après què són els serveis a Angular, com crear-los i com utilitzar-los en components. Els serveis són una eina poderosa per encapsular la lògica de negoci i les operacions de dades, fent que el codi sigui més modular i fàcil de mantenir. En el proper tema, explorarem com crear i utilitzar serveis més avançats i com gestionar la injecció de dependències.
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