我有一个使用指令的定制验证器.我正在使用一种名为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>

这里,Valid-Email是使用正则表达式来验证邮箱的指令.

对于ex:test@gmail.co,在这种情况下,如果我删除最后一个字符‘o’,它将不会显示错误验证.但如果我删除最后两个字符‘co’,它将显示正确的验证.

ValiateForm方法类似于

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

期望解决方案能够正确显示验证.

推荐答案

首先编写一个函数,如

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

}

然后在文本区域中调用"vm.validate"函数,而不是"vm.validateForm".

我希望这将解决您的问题.

Angular相关问答推荐

FormArray包含嵌套的FormGroups.如何访问嵌套的表单组控件?

使Angular 效果只执行一次

PrimeNG侧栏清除primeNG消息.为什么?

如何在init为FALSE时以Angular 初始化主拇指擦除器-Swiper 11.0.6Angular 17 SSR

带有服务依赖的Angular测试类

如何包装NGB carousel ?

Angular 如何渲染ngFor?

Angular 如何观察DOM元素属性的变化?

我应该对我想要在我的Angular 17+组件中显示的任何变量使用信号吗?

在Angular 17的本地服务应用程序时禁用SSR

Angular 懒惰地加载一个服务

区分material 手风琴

具有两个订阅方法的 Angular 16 takeUntilDestroyed 运算符

在父组件的子组件中使用 ng-template

从 angular 11 升级到 angular 12 后,我的项目没有使用优化参数进行编译

Angular ngFor 索引从 1 开始 循环

如何以像素为单位将属性绑定到 style.width?

Angular2 测试 - 按 ID 获取元素

如何为 Angular 2 中的渲染元素绑定事件监听器?

RxJS:takeUntil() Angular 组件的 ngOnDestroy()