Surveiller la validité du formulaire depuis le contrôleur
-
21-12-2019 - |
Question
J'ai un formulaire dans mon contrôleur.J'aimerais pouvoir définir une variable de portée basée sur la validité de ce formulaire.J'ai déjà donné un nom au formulaire :
<div ng-controller="myCtrl">
...
<form name='myForm'>
...
</form>
...
</div>
Et j'ai créé une $watch sur la propriété $valid de ce formulaire (elle se trouve dans le contrôleur qui contient ce formulaire) :
$scope.$watch('myForm.$valid', function(oldVal, newVal) {
console.log("Woo! This might be working!");
if (newVal) {
$scope.otherVar = true;
} else {
$scope.otherVar = false;
}
}
Ma déclaration de journal apparaît UNIQUEMENT au chargement de la page, mais pas lorsque la validité du formulaire change.(J'ai vérifié que la propriété $valid du formulaire change en insérant :
{{ monFormulaire.$valid }}
dans le cadre de mon formulaire)J'ai regardé autour de moi et d'après ce que j'ai vu ça devrait travailler.(Il est évident que quelque chose ne va pas...)
La solution
Je pense que ton problème est function(oldVal, newVal)
devrait être function(newVal, oldVal)
.A part ça, je ne trouve aucun défaut dans votre code.Voici un exemple de plunkr fonctionnel : http://plnkr.co/edit/ur42HFcVQbpTEBkRBtdY?p=preview
En dehors de cela, c'est probablement quelque chose d'autre dans votre code qui affecte le formulaire, vous ne l'avez pas imbriqué dans quelque chose comme un ng-if
ou ng-view
?