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:

ng generate service my-service

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 propietat data 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:

  1. Generar el servei:

    ng generate service product
    
  2. 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;
      }
    }
    
  3. Crear un component:

    ng generate component product-list
    
  4. 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();
      }
    }
    
  5. 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

Mòdul 2: Conceptes bàsics de TypeScript

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

Mòdul 9: Gestió d'estat

Mòdul 10: Proves en Angular

Mòdul 11: Temes avançats

Mòdul 12: Desplegament i millors pràctiques

© Copyright 2024. Tots els drets reservats