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
ngModelLa 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
ngFormLa 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
