Negli script precedenti abbiamo visto come creare e utilizzare una template variable assegnandole il valore della direttiva ngForm. In questo script usiamo la stessa tecnica per mostrare in linea gli errori di ogni singolo campo della form.
Supponiamo di avere una form con due campi obbligatori. Il modo migliore per mostrare i messaggi di errore è visualizzarli accanto al campo invece di mostrare in fondo alla form un generico messaggio di dati non validi come visto nello script precedente. Per fare questo dobbiamo creare una template variable per ogni campo e assegnare a ogni variabile il valore della direttiva ngModel che contiene lo stato di ogni campo compreso lo stato della validazione.
<input type="text" name="description" [(ngModel)]="description" required #description="ngModel"> <span *ngIf="description.valid">obbligatorio</span> <input type="text" name="name" [(ngModel)]="name" required #name="ngModel"> <span *ngIf="name.valid">obbligatorio</span>
Come possiamo vedere, la proprieta valid della direttiva ngModel ci dice se il campo è valido o meno.
In questo modo però, quando la form si apre e i campo sono vuoti, otteniamo immediatamente il messaggio di errore.
Per la User Experience questo comportamente non è ideale, ma possiamo ricorrere alla proprietà touched di ngModel che ci dice se il campo è stato utilizzato dall'utente (ad esempio ha modificato il valore).
<input type="text" name="description" [(ngModel)]="description" required #description="ngModel"> <span *ngIf="description.touched && description.valid">obbligatorio</span> <input type="text" name="name" [(ngModel)]="name" required #name="ngModel"> <span *ngIf="name.touched && name.valid">obbligatorio</span>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Utilizzare un service principal per accedere a Azure Container Registry
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Estrarre dati randomici da una lista di oggetti in C#
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Generare token per autenicarsi sulle API di GitHub
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Recuperare l'ultima versione di una release di GitHub
Migrare una service connection a workload identity federation in Azure DevOps
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON