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
Path addizionali per gli asset in ASP.NET Core MVC
Gestire progetti NPM in .NET Aspire
Esporre un server MCP esistente con Azure API Management
Eliminare una project wiki di Azure DevOps
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Creare un agente A2Acon Azure Logic Apps
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Collegare applicazioni server e client con .NET Aspire
Creare una libreria CSS universale: Immagini
Aggiornare a .NET 9 su Azure App Service
Gestione delle scrollbar dinamiche in HTML e CSS
Integrazione di Copilot in .NET Aspire
I più letti di oggi
- Finalmente anche Silverlight 4.0 è RTW!
- Windows Phone 7 è in RTM
- Disponibile l'SDK per Windows Phone 7.8
- Nuove pubblicazioni dal 3 Settembre
- Rilasciata la versione 1.1 di Fujitsu NetCOBOL
- Microsoft Security Bulletin MS03-046
- Microsoft Security Bulletin MS03-047
- Da oggi ASPItalia.com gira su Windows Server 2003
- SP1 per il .NET Framework
- Speciale ATLAS: AJAX con ASP.NET 2.0


