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

Другие вопросы по тегам