angularjs - не может сделать недействительным ввод (объект не поддерживает свойство или метод '$setValidity')
Я пытаюсь сделать следующее
if ($scope.RetypePassword != $scope.resource.Password) {
$scope.resource.Password.$setValidity("missmatch", false);
} else {
$scope.resource.Password.$setValidity("missmatch", true);
}
но не с этой ошибкой
TypeError: Object doesn't support property or method '$setValidity'
В чем может быть причина?
resource.Password связан с данными, подобными этим
<input type="password" ng-model="resource.Password" name="Password" />
2 ответа
Решение
Вы не должны иметь имя формы resource
потому что у вас есть модель, которая уже имеет объект в resource
попробуйте другой, отличный от имени, решит вашу проблему, как name="myForm"
наценка
<form name="myForm">
<input type="password" ng-model="resource.Password" name="Password" />
</form>
Код
if ($scope.RetypePassword != $scope.resource.Password) {
$scope.myForm.Password.$setValidity("missmatch", false);
} else {
$scope.myForm.Password.$setValidity("missmatch", true);
}
Дело в том, что resource.RetypePassword
это объект области (модель), это не то же самое, что ngModelController
тебе нужно. Этот контроллер не подвергается прямому воздействию. Однако вы можете получить к нему доступ через родителей form
объект по имени входа.
Так что в случае, если ваш HTML выглядит так:
<form novalidate name="form">
<div>
<label>Password</label>
<div><input type="password" ng-model="resource.Password" name="Password" /></div>
</div>
<div>
<label>Confirm Password</label>
<div><input type="password" ng-model="resource.RetypePassword" name="RetypePassword" /></div>
</div>
</form>
Тогда вы сможете сделать это
if ($scope.resource.RetypePassword != $scope.resource.Password) {
$scope.form.Password.$setValidity("missmatch", false);
} else {
$scope.form.Password.$setValidity("missmatch", true);
}
Проверьте небольшую демонстрацию принципа.
Демоверсия: http://plnkr.co/edit/tVFlytaW2WVJfLdiq4o2?p=preview