Els formularis són una part essencial de moltes aplicacions mòbils, ja que permeten als usuaris introduir i enviar dades. En aquest tema, aprendrem com crear i gestionar formularis en una aplicació Ionic utilitzant Angular Forms.
Continguts
Introducció als Formularis en Ionic
Ionic utilitza Angular per gestionar els formularis, aprofitant les potents funcionalitats d'Angular Forms. Hi ha dues maneres principals de treballar amb formularis en Angular:
- Formularis Basats en Plantilla (Template-driven forms): Utilitzen directives Angular en el codi HTML per crear i gestionar formularis.
- Formularis Reactius (Reactive forms): Utilitzen una estructura basada en models per gestionar l'estat del formulari en el codi TypeScript.
En aquest tema, ens centrarem en els formularis reactius, ja que ofereixen més control i flexibilitat.
Creant un Formulari Bàsic
Pas 1: Configuració del Mòdul
Primer, assegura't que el mòdul ReactiveFormsModule
estigui importat en el teu mòdul principal (app.module.ts
):
import { ReactiveFormsModule } from '@angular/forms'; @NgModule({ declarations: [ // les teves declaracions de components ], imports: [ // altres mòduls ReactiveFormsModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
Pas 2: Creant el Formulari en el Component
Crea un nou component per al formulari:
En el fitxer user-form.component.ts
, defineix el formulari utilitzant FormBuilder
:
import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; @Component({ selector: 'app-user-form', templateUrl: './user-form.component.html', styleUrls: ['./user-form.component.scss'], }) export class UserFormComponent implements OnInit { userForm: FormGroup; constructor(private fb: FormBuilder) {} ngOnInit() { this.userForm = this.fb.group({ name: ['', Validators.required], email: ['', [Validators.required, Validators.email]], password: ['', [Validators.required, Validators.minLength(6)]] }); } onSubmit() { if (this.userForm.valid) { console.log(this.userForm.value); } else { console.log('Form is not valid'); } } }
Pas 3: Creant la Plantilla del Formulari
En el fitxer user-form.component.html
, crea la plantilla del formulari:
<form [formGroup]="userForm" (ngSubmit)="onSubmit()"> <ion-item> <ion-label position="floating">Name</ion-label> <ion-input formControlName="name"></ion-input> </ion-item> <ion-item> <ion-label position="floating">Email</ion-label> <ion-input formControlName="email" type="email"></ion-input> </ion-item> <ion-item> <ion-label position="floating">Password</ion-label> <ion-input formControlName="password" type="password"></ion-input> </ion-item> <ion-button expand="full" type="submit">Submit</ion-button> </form>
Validació de Formularis
La validació és crucial per assegurar que les dades introduïdes pels usuaris siguin correctes i segures. En el nostre exemple, ja hem afegit algunes validacions bàsiques utilitzant Validators
d'Angular.
Mostrant Missatges d'Error
Podem mostrar missatges d'error en la plantilla del formulari:
<ion-item> <ion-label position="floating">Name</ion-label> <ion-input formControlName="name"></ion-input> </ion-item> <div *ngIf="userForm.get('name').invalid && userForm.get('name').touched"> <ion-text color="danger">Name is required</ion-text> </div> <ion-item> <ion-label position="floating">Email</ion-label> <ion-input formControlName="email" type="email"></ion-input> </ion-item> <div *ngIf="userForm.get('email').invalid && userForm.get('email').touched"> <ion-text color="danger"> <span *ngIf="userForm.get('email').errors.required">Email is required</span> <span *ngIf="userForm.get('email').errors.email">Invalid email format</span> </ion-text> </div> <ion-item> <ion-label position="floating">Password</ion-label> <ion-input formControlName="password" type="password"></ion-input> </ion-item> <div *ngIf="userForm.get('password').invalid && userForm.get('password').touched"> <ion-text color="danger"> <span *ngIf="userForm.get('password').errors.required">Password is required</span> <span *ngIf="userForm.get('password').errors.minlength">Password must be at least 6 characters long</span> </ion-text> </div>
Gestió d'Errors
És important gestionar els errors de manera adequada per millorar l'experiència de l'usuari. A més de mostrar missatges d'error, podem desactivar el botó de submissió si el formulari no és vàlid:
Exercicis Pràctics
Exercici 1: Afegir un Camp de Confirmació de Contrasenya
- Afegeix un camp de confirmació de contrasenya al formulari.
- Assegura't que la contrasenya i la confirmació de contrasenya coincideixin.
- Mostra un missatge d'error si les contrasenyes no coincideixen.
Solució
ngOnInit() { this.userForm = this.fb.group({ name: ['', Validators.required], email: ['', [Validators.required, Validators.email]], password: ['', [Validators.required, Validators.minLength(6)]], confirmPassword: ['', Validators.required] }, { validator: this.passwordMatchValidator }); } passwordMatchValidator(form: FormGroup) { return form.get('password').value === form.get('confirmPassword').value ? null : { mismatch: true }; }
<ion-item> <ion-label position="floating">Confirm Password</ion-label> <ion-input formControlName="confirmPassword" type="password"></ion-input> </ion-item> <div *ngIf="userForm.errors?.mismatch && userForm.get('confirmPassword').touched"> <ion-text color="danger">Passwords do not match</ion-text> </div>
Conclusió
En aquest tema, hem après com crear i gestionar formularis en una aplicació Ionic utilitzant Angular Forms. Hem vist com crear un formulari bàsic, afegir validacions i gestionar errors. Els exercicis pràctics proporcionats t'ajudaran a reforçar els conceptes apresos. En el proper tema, explorarem la validació i gestió d'errors en més profunditat.
Curs de Desenvolupament Ionic
Mòdul 1: Introducció a Ionic
- Què és Ionic?
- Configuració de l'Entorn de Desenvolupament
- Creant la Teva Primera App Ionic
- Entenent l'Estructura del Projecte
- Executant i Depurant la Teva App
Mòdul 2: Components Bàsics i Navegació
- Visió General dels Components Ionic
- Utilitzant Botons i Icones Ionic
- Creant i Utilitzant Pàgines
- Navegació i Enrutament
- Pestanyes i Menús Laterals
Mòdul 3: Estilització i Tematització
- Introducció a l'Estilització Ionic
- Utilitzant CSS i SCSS en Ionic
- Tematitzant la Teva App Ionic
- Disseny Responsiu en Ionic
- Personalitzant Components Ionic
Mòdul 4: Treballant amb Dades
- Introducció al Binding de Dades
- Utilitzant Serveis Angular
- Peticions HTTP i APIs
- Emmagatzemant Dades Localment
- Utilitzant Ionic Storage
Mòdul 5: Components i Funcionalitats Avançades
- Utilitzant Formularis Ionic
- Validació i Gestió d'Errors
- Utilitzant Plugins Ionic Native i Cordova
- Accedint a Funcionalitats del Dispositiu
- Notificacions Push
Mòdul 6: Proves i Desplegament
- Proves Unitàries en Ionic
- Proves de Cap a Cap
- Construint per a Producció
- Desplegant a les Botigues d'Aplicacions
- Integració i Lliurament Continu