Angular Custom Validation using Directive 在 ng- change 中无法正常工作

Angular Custom Validation using Directive not working properly in ng- change

提问人:Vidya R 提问时间:9/17/2023 更新时间:9/17/2023 访问量:21

问:

我有一个使用指令的自定义验证器。im 使用 ng-change 调用的方法显示验证。验证仅在第二次更改中显示。

  <textarea id="txtEmail" name="emailId" type="text" class="form-control" 
           ng-change="$ctrl.validateForm()" ng-model-options="{allowInvalid: true}" 
           validate-Email="$ctrl.emailId" 
           ng-model="$ctrl.emailId" disabled-exception aria-labelledby="Email">
  </textarea>

这里 validate-Email 是使用正则表达式来验证电子邮件的指令。

例如: [email protected] ,在这种情况下,如果我删除最后一个字符“o”,它将不会显示错误验证。但是,如果我删除最后两个字符“co”,它将显示正确的验证。

validateForm 方法类似于

         ` vm.validateForm = function () {
                var errors = [];
                angular.forEach(vm.form.$error, function (item, key: string) {
                angular.forEach(item, function (errorField) {
                                    errors.push("Email Error");
                }`

期望解决方案正确显示验证。

角度 验证

评论


答:

1赞 suman 9/17/2023 #1

首先编写一个函数,如

vm.validate = function () {
    $timeout.cancel(callValidation);
    callValidation = $timeout(vm.validateForm, 1000);

}

然后在 textarea 中调用“vm.validate”函数,而不是“vm.validateForm”。

我希望这能满足您的疑问。