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
@Injectableindica 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 propietatdatadel 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
