Les directives són una de les característiques més potents d'Angular. Permeten modificar el comportament dels elements del DOM de manera declarativa. En aquest tema, explorarem 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 variables booleanes del component.- La classe
active
s'aplicarà siisActive
éstrue
. - La classe
disabled
s'aplicarà siisDisabled
éstrue
.
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 variables del component.- El color del text serà el valor de
textColor
. - La mida de la font serà el valor de
fontSize
en píxels.
Directives estructurals integrades
ngIf
La directiva ngIf
permet afegir o eliminar elements del DOM basant-se en una condició.
Exemple:
Explicació:
isVisible
és una variable booleana del component.- El div només es mostrarà si
isVisible
éstrue
.
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.- Per a cada element de
items
, es crearà un elementli
amb el contingut de l'element.
ngSwitch
La directiva ngSwitch
permet mostrar o ocultar 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 variable del component.- Es mostrarà el div corresponent al valor de
viewMode
('map'
,'list'
o per defecte).
Exercicis pràctics
Exercici 1: Utilitzar ngClass
i ngStyle
Objectiu: Crear un component que canviï la classe i els estils d'un element basant-se en variables del component.
Instruccions:
- Crea un component nou anomenat
StyleToggleComponent
. - Afegeix dues variables booleanes al component:
isActive
iisDisabled
. - Afegeix un div al template del component que utilitzi
ngClass
ingStyle
per canviar la classe i els estils basant-se en les variables. - Afegeix dos botons per canviar els valors de
isActive
iisDisabled
.
Solució:
// style-toggle.component.ts import { Component } from '@angular/core'; @Component({ selector: 'app-style-toggle', templateUrl: './style-toggle.component.html', styleUrls: ['./style-toggle.component.css'] }) export class StyleToggleComponent { isActive = false; isDisabled = false; toggleActive() { this.isActive = !this.isActive; } toggleDisabled() { this.isDisabled = !this.isDisabled; } }
<!-- style-toggle.component.html --> <div [ngClass]="{'active': isActive, 'disabled': isDisabled}" [ngStyle]="{'color': isActive ? 'green' : 'red'}"> Aquest div canvia de classe i estil. </div> <button (click)="toggleActive()">Toggle Active</button> <button (click)="toggleDisabled()">Toggle Disabled</button>
Exercici 2: Utilitzar ngIf
i ngFor
Objectiu: Crear un component que mostri una llista d'elements i permeti afegir-ne de nous.
Instruccions:
- Crea un component nou anomenat
ItemListComponent
. - Afegeix una variable
items
que sigui un array de strings. - Afegeix un input i un botó per afegir nous elements a la llista.
- Utilitza
ngFor
per mostrar la llista d'elements. - Utilitza
ngIf
per mostrar un missatge quan la llista estigui buida.
Solució:
// item-list.component.ts import { Component } from '@angular/core'; @Component({ selector: 'app-item-list', templateUrl: './item-list.component.html', styleUrls: ['./item-list.component.css'] }) export class ItemListComponent { items: string[] = []; newItem: string = ''; addItem() { if (this.newItem) { this.items.push(this.newItem); this.newItem = ''; } } }
<!-- item-list.component.html --> <div> <input [(ngModel)]="newItem" placeholder="Nou element"> <button (click)="addItem()">Afegeix</button> </div> <ul> <li *ngFor="let item of items">{{ item }}</li> </ul> <div *ngIf="items.length === 0"> La llista està buida. </div>
Conclusió
Les directives integrades d'Angular són eines poderoses que permeten modificar el comportament i l'aparença dels elements del DOM de manera declarativa. En aquest tema, hem explorat algunes de les directives d'atribut i estructurals més utilitzades, com ngClass
, ngStyle
, ngIf
, ngFor
i ngSwitch
. A més, hem practicat amb exercicis per reforçar els conceptes apresos. En el proper tema, explorarem com crear directives personalitzades per adaptar-les a les nostres necessitats específiques.
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