Els formularis basats en plantilles a Angular són una manera senzilla i declarativa de crear i gestionar formularis. Utilitzen directives Angular per vincular el formulari HTML amb el model de dades de l'aplicació.
Objectius d'aquest tema
- Comprendre els conceptes bàsics dels formularis basats en plantilles.
- Aprendre a crear un formulari basat en plantilles.
- Validar formularis utilitzant validacions integrades i personalitzades.
- Gestionar l'estat del formulari i els missatges d'error.
Conceptes clau
- Directiva
ngModel
ngModel
La directiva ngModel
és el cor dels formularis basats en plantilles. Permet la vinculació bidireccional entre el formulari HTML i el model de dades.
- Directiva
ngForm
ngForm
La directiva ngForm
s'aplica automàticament a qualsevol element <form>
i proporciona un objecte de formulari Angular que conté l'estat del formulari i els controls.
- Validacions
Angular proporciona diverses validacions integrades com required
, minlength
, maxlength
, pattern
, etc. També es poden crear validacions personalitzades.
Crear un formulari basat en plantilles
Pas 1: Configuració del mòdul
Assegura't d'importar el mòdul FormsModule
al mòdul de l'aplicació.
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; @NgModule({ declarations: [AppComponent], imports: [BrowserModule, FormsModule], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
Pas 2: Crear el formulari HTML
Crea un formulari HTML utilitzant la directiva ngModel
per vincular els controls del formulari amb el model de dades.
<form #userForm="ngForm" (ngSubmit)="onSubmit(userForm)"> <div> <label for="name">Nom:</label> <input type="text" id="name" name="name" ngModel required> </div> <div> <label for="email">Email:</label> <input type="email" id="email" name="email" ngModel required email> </div> <button type="submit" [disabled]="userForm.invalid">Enviar</button> </form>
Pas 3: Gestionar l'enviament del formulari
Afegeix la lògica per gestionar l'enviament del formulari al component.
import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html' }) export class AppComponent { onSubmit(form: any) { console.log('Form Data: ', form.value); } }
Validació de formularis
Validacions integrades
Angular proporciona diverses validacions integrades que es poden aplicar directament als controls del formulari.
<div> <label for="name">Nom:</label> <input type="text" id="name" name="name" ngModel required minlength="3"> <div *ngIf="userForm.controls.name?.invalid && userForm.controls.name?.touched"> <small *ngIf="userForm.controls.name?.errors?.required">El nom és obligatori.</small> <small *ngIf="userForm.controls.name?.errors?.minlength">El nom ha de tenir almenys 3 caràcters.</small> </div> </div>
Validacions personalitzades
Es poden crear validacions personalitzades utilitzant directives Angular.
import { Directive } from '@angular/core'; import { NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms'; @Directive({ selector: '[appCustomValidator]', providers: [{ provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true }] }) export class CustomValidatorDirective implements Validator { validate(control: AbstractControl): ValidationErrors | null { const isValid = /* lògica de validació */; return isValid ? null : { customError: true }; } }
<input type="text" id="custom" name="custom" ngModel appCustomValidator> <div *ngIf="userForm.controls.custom?.errors?.customError">Error personalitzat.</div>
Resum
En aquest tema, hem après a:
- Crear formularis basats en plantilles utilitzant la directiva
ngModel
. - Aplicar validacions integrades i personalitzades als controls del formulari.
- Gestionar l'estat del formulari i mostrar missatges d'error.
Els formularis basats en plantilles són una manera poderosa i senzilla de gestionar formularis a Angular, especialment per a aplicacions petites i mitjanes. En el següent tema, explorarem els formularis reactius, que ofereixen més control i flexibilitat per a aplicacions més complexes.
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