Al fine di semplificare le cose ho fatto un modulo di esempio per descrivere la mia domanda:Perché un modulo non valido è valido all'inizio e subito dopo risulta non valido?
<form novalidate name="form">
<input required name="foo" ng-model="my.foo">
</form>
E anche un controller:
angular.module('sample', []).controller('MainController', function($scope) {
$scope.$watch('form.$valid', function (valid) {
console.log(valid);
});
});
Risultato atteso:
> false
Risultato effettivo:
> true
> false
Qualcuno può dirmi perché inizialmente il modulo è valido e quindi non è più valido (cosa dovrebbe essere, tra l'altro)?
Inizializza probabilmente come true durante un digest e viene modificato in seguito quando soddisfa l'input richiesto. Solo una speculazione però. –
@OmriAharon Questo è esattamente ciò che sta accadendo, ma perché? Non dovrebbe essere invalido anche al momento dell'inizializzazione? – Carlos
Direi che se non ha ancora incontrato l'input richiesto, allora non saprà che non è valido, dal momento che ormai è solo una forma vuota. Sarebbe bello se potessi ottenere qualche conferma, non l'ho trovato in nessuna risorsa ... –