Mira la validez del formulario desde el controlador.
-
21-12-2019 - |
Pregunta
Tengo un formulario dentro de mi controlador.Me gustaría poder establecer una variable de alcance basada en la validez de este formulario.Ya he dado el formulario un nombre:
<div ng-controller="myCtrl">
...
<form name='myForm'>
...
</form>
...
</div>
y han creado un reloj $ en la propiedad válida de ese formulario (esto se encuentra en el controlador que contiene este formulario):
$scope.$watch('myForm.$valid', function(oldVal, newVal) {
console.log("Woo! This might be working!");
if (newVal) {
$scope.otherVar = true;
} else {
$scope.otherVar = false;
}
}
Mi declaración de registro solo aparece en la carga de la página, pero no cuando cambia la validez del formulario.(He verificado que la propiedad válida de la forma está cambiando insertando:
{{MyForm. $ VALIDO}}
Dentro del alcance de mi forma)
He estado mirando a su alrededor, y por lo que he visto esto debería estar trabajando.(Obviamente, algo está mal, aunque ...)
Solución
Creo que su problema es function(oldVal, newVal)
debe ser function(newVal, oldVal)
.
Aparte de eso, no puedo encontrar ninguna falla en su código.
Aquí hay un ejemplo de Plunkr de trabajo: http://plnkr.co/edit/ur42hfcvqbptebkrbtdy?p=preview
Fuera de eso, es probable que sea otra cosa en su código que afecte el formulario, no lo tiene anidado en algo así como un ng-if
o ng-view
?