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
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Creare una libreria CSS universale: Clip-path
Generare velocemente pagine CRUD in Blazor con QuickGrid
Gestione dell'annidamento delle regole dei layer in CSS
Utilizzare WhenEach per processare i risultati di una lista di task
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Configurare lo startup di applicazioni server e client con .NET Aspire
Selettore CSS :has() e i suoi casi d'uso avanzati
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
I più letti di oggi
- Disponibile l'Update 1 per Entity Framework 4.1
- Dal 29 febbraio arriva WinRTItalia.com: tutto sullo sviluppo per Windows 8 e Metro
- Annunciato Visual Studio 2013: la prima preview a fine mese a Build
- Anteprima del nuovo Web Matrix
- Le pubblicazioni riprenderanno il 12
- Microsoft Launch Tour 2006 a partire dal 7 marzo 2006