Gli errori di validazione dei form possono essere mostrati in modo condizionale in AngularJS.
Consideriamo il seguente frammento di codice:
<form name="signupForm" novalidate>
<div class="form-group">
<label for="username">Username</label>
<input type="text" placeholder="Username" name="username" ng-minlength="3" ng-maxlength="20"
ng-class="{error: signupForm.username.$dirty && signupForm.username.$invalid}"
required />
<div class="error bg-danger text-danger" ng-show="signupForm.username.$dirty && signupForm.username.$invalid && !signupForm.username.$focused">
<small class="error" ng-show="signupForm.username.$error.required">
Your username is required.
</small>
<small class="error" ng-show="signupForm.username.$error.minlength">
Your username is required to be at least 3 characters
</small>
<small class="error" ng-show="signupForm.username.$error.maxlength">
Your username cannot be longer than 20 characters
</small>
</div>
</div>
</form>
I messaggi di errore vengono mostrati in ordine sequenziale:
$invalid
: il campo non soddisfa globalmente i criteri di validazionerequired
: il campo è stato lasciato vuoto (l'attributorequired
)minlength
: il campo non soddisfa la direttivang-minlength
maxlength
: il campo non soddisfa la direttivang-maxlength
.
La direttiva condizionale ng-show
mostrerà in questo modo gli errori solo se questi si sono effettivamente verificati. Importante è l'uso di $focused
per evitare che la validazione parta quando l'utente ha selezionato il campo.