Què és un servei en Angular?
Un servei en Angular és una classe que conté lògica empresarial, dades o funcionalitats que es poden compartir entre diferents components de l'aplicació. Els serveis permeten separar la lògica de negoci de la lògica de presentació, facilitant així la reutilització del codi i la seva mantenibilitat.
Característiques dels serveis:
- Reutilitzables: Els serveis es poden utilitzar en múltiples components.
- Injectables: Es poden injectar en components o altres serveis mitjançant el sistema d'injecció de dependències d'Angular.
- Encapsulació: Permeten encapsular la lògica de negoci, mantenint els components més nets i enfocats en la presentació.
Creació d'un servei
Pas 1: Generar un servei
Angular CLI proporciona una manera fàcil de generar serveis. Utilitza el següent comandament per crear un servei:
Aquest comandament 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
A continuació, es mostra un exemple bàsic d'un servei que proporciona dades:
import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class MyService { private data: string[] = ['Dada 1', 'Dada 2', 'Dada 3']; constructor() { } getData(): string[] { return this.data; } }
Explicació del codi:
- @Injectable: El decorador
@Injectable
indica que aquesta classe pot ser injectada com una dependència. L'opcióprovidedIn: 'root'
fa que el servei estigui disponible a nivell global de l'aplicació. - data: Una propietat privada que emmagatzema un array de cadenes.
- getData(): Un mètode públic que retorna les dades emmagatzemades.
Utilització d'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:
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:
- MyService: Importem el servei
MyService
. - constructor(private myService: MyService): Injectem el servei en el constructor del component.
- ngOnInit(): Utilitzem el mètode
getData()
del servei per obtenir les dades i assignar-les a la propietatdata
del component.
Exercici pràctic
Objectiu:
Crear un servei que proporcioni una llista de productes i utilitzar-lo en un component per mostrar aquests productes.
Passos:
-
Generar el servei:
ng generate service product
-
Definir el servei (
product.service.ts
):import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class ProductService { private products: string[] = ['Producte 1', 'Producte 2', 'Producte 3']; constructor() { } getProducts(): string[] { return this.products; } }
-
Crear un component:
ng generate component product-list
-
Utilitzar el servei en el component (
product-list.component.ts
):import { Component, OnInit } from '@angular/core'; import { ProductService } from '../product.service'; @Component({ selector: 'app-product-list', templateUrl: './product-list.component.html', styleUrls: ['./product-list.component.css'] }) export class ProductListComponent implements OnInit { products: string[]; constructor(private productService: ProductService) { } ngOnInit(): void { this.products = this.productService.getProducts(); } }
-
Mostrar els productes en la plantilla (
product-list.component.html
):<ul> <li *ngFor="let product of products">{{ product }}</li> </ul>
Solució:
Després de seguir els passos anteriors, hauríeu de veure una llista de productes mostrada en el component ProductListComponent
.
Resum
En aquesta secció, hem après què són els serveis en 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 compartir dades entre components, millorant així la modularitat i mantenibilitat de les aplicacions Angular.
Curs d'Angular 2+
Mòdul 1: Introducció a Angular
- Què és Angular?
- Configuració de l'entorn de desenvolupament
- La teva primera aplicació Angular
- Arquitectura d'Angular
Mòdul 2: Conceptes bàsics de TypeScript
- Introducció a TypeScript
- Variables i tipus de dades en TypeScript
- Funcions i funcions fletxa
- Classes i interfícies
Mòdul 3: Components i plantilles
Mòdul 4: Directives i pipes
Mòdul 5: Serveis i injecció de dependències
Mòdul 6: Enrutament i navegació
Mòdul 7: Formularis en Angular
Mòdul 8: Client HTTP i observables
- Introducció al client HTTP
- Realització de sol·licituds HTTP
- Gestió de respostes HTTP
- Ús d'observables