Les directives són una de les característiques més potents d'Angular. Permeten modificar el comportament del DOM de manera declarativa. En aquest tema, ens centrarem en les directives integrades que Angular proporciona per defecte.
Què són les directives?
Les directives són classes que poden modificar el comportament dels elements del DOM. Hi ha tres tipus principals de directives en Angular:
- Directives d'atribut: Canvien l'aparença o el comportament d'un element, component o altra directiva.
- Directives estructurals: Canvien la disposició del DOM afegint o eliminant elements.
- Components: Són directives amb una plantilla associada.
Directives d'atribut integrades
ngClass
La directiva ngClass
permet afegir o eliminar classes CSS d'un element de manera dinàmica.
Exemple:
<div [ngClass]="{'active': isActive, 'disabled': isDisabled}"> Aquest div tindrà la classe 'active' si isActive és true i 'disabled' si isDisabled és true. </div>
Explicació:
isActive
iisDisabled
són propietats del component que determinen si les classesactive
idisabled
s'apliquen respectivament.
ngStyle
La directiva ngStyle
permet aplicar estils CSS a un element de manera dinàmica.
Exemple:
<div [ngStyle]="{'color': textColor, 'font-size': fontSize + 'px'}"> Aquest text tindrà el color i la mida de font especificats. </div>
Explicació:
textColor
ifontSize
són propietats del component que determinen el color del text i la mida de la font respectivament.
Directives estructurals integrades
ngIf
La directiva ngIf
permet afegir o eliminar elements del DOM basant-se en una condició booleana.
Exemple:
Explicació:
isVisible
és una propietat del component que determina si l'element es mostra o no.
ngFor
La directiva ngFor
permet iterar sobre una col·lecció d'elements i crear una instància del DOM per a cada element.
Exemple:
Explicació:
items
és una col·lecció (array) del component. Cada element deitems
es mostrarà com un element de la llista (<li>
).
ngSwitch
La directiva ngSwitch
permet mostrar un dels diversos elements basant-se en una condició.
Exemple:
<div [ngSwitch]="viewMode"> <div *ngSwitchCase="'map'">Vista de mapa</div> <div *ngSwitchCase="'list'">Vista de llista</div> <div *ngSwitchDefault>Vista per defecte</div> </div>
Explicació:
viewMode
és una propietat del component que determina quin cas es mostrarà. SiviewMode
és'map'
, es mostrarà el primer div; si és'list'
, es mostrarà el segon div; en cas contrari, es mostrarà el div per defecte.
Exercicis pràctics
Exercici 1: Utilitzar ngClass
i ngStyle
Descripció: Crea un component que canviï el color i la mida del text d'un paràgraf basant-se en les propietats del component.
Codi:
<!-- app.component.html --> <p [ngClass]="{'highlight': isHighlighted}" [ngStyle]="{'font-size': fontSize + 'px'}"> Aquest és un paràgraf dinàmic. </p> <button (click)="toggleHighlight()">Canvia el ressaltat</button> <button (click)="increaseFontSize()">Augmenta la mida de la font</button>
// app.component.ts import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { isHighlighted = false; fontSize = 14; toggleHighlight() { this.isHighlighted = !this.isHighlighted; } increaseFontSize() { this.fontSize += 2; } }
Exercici 2: Utilitzar ngIf
i ngFor
Descripció: Crea un component que mostri una llista d'elements i permeti afegir o eliminar elements de la llista.
Codi:
<!-- app.component.html --> <div> <input [(ngModel)]="newItem" placeholder="Nou element"> <button (click)="addItem()">Afegeix</button> </div> <ul> <li *ngFor="let item of items"> {{ item }} <button (click)="removeItem(item)">Elimina</button> </li> </ul> <div *ngIf="items.length === 0"> No hi ha elements a la llista. </div>
// app.component.ts import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { items: string[] = []; newItem: string = ''; addItem() { if (this.newItem) { this.items.push(this.newItem); this.newItem = ''; } } removeItem(item: string) { this.items = this.items.filter(i => i !== item); } }
Resum
En aquesta secció, hem après sobre les directives integrades d'Angular, incloent ngClass
, ngStyle
, ngIf
, ngFor
i ngSwitch
. Aquestes directives ens permeten modificar el comportament i l'aparença dels elements del DOM de manera declarativa i dinàmica. Hem vist exemples pràctics de com utilitzar aquestes directives i hem realitzat exercicis per reforçar els conceptes apresos. En el proper mòdul, explorarem els serveis i 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