当前位置: 首页 > 知识库问答 >
问题:

如何在Angular2/4/5中实现自定义异步验证器

梁丘安晏
2023-03-14
export class someClass{

    myForm:ControlGroup;

    constructor(public http:Http, public formBuilder:FormBuilder)
       this.myForm = formBuilder.group({
            ImageId: ["", Validators.required, this.asynValidator]
    });

    asyncValidator(control: Control): {[key: string]: any} {

        return new Promise (resolve => {

          let headers = new Headers();
          headers.append('Content-Type', 'application/json');

          this.http.get('http://localhost/ImageIdValidate?id='+ control.value, {headers:headers})
                .map(res => res.json())
                .subscribe(data => {
                    console.log(data);
                    if(data != null) {
                        resolve({"duplicate": true})
                    }
                    else resolve(null);      
                })
            });
        });
      }
    }

它甚至不发出服务器请求。

共有1个答案

蒋承教
2023-03-14

您需要将您的方法绑定到组件实例本身上,如下所述:

this.myForm = formBuilder.group({
            ImageId: ["",    
               Validators.required, 
               this.asynValidator.bind(this)]
    });

否则,您将无法使用http属性执行请求。

本文还可以为您提供一些关于异步表单验证的提示(请参见“异步验证”一节):

    null
 类似资料:
  • 本文向大家介绍Angular2表单自定义验证器的实现,包括了Angular2表单自定义验证器的实现的使用技巧和注意事项,需要的朋友参考一下 本文主要给大家介绍如何判断验证器的结果。在这里,我们就来看看怎样实现一个自定义的验证器。 目标 我们要实现一个验证手机号的验证器,使用的实例还是基于之前的文章里面的实例,也就是用户信息输入的表单页面。我们在手机号的元素上添加一个验证手机号的验证器。然后,如果手

  • 问题内容: 我将Laravel应用程序从4升级到5。但是,我有一个自定义验证器,无法使用。 在L4中,我制作了一个 validators.php 文件,并使用将其包含在 global.php 中。 我尝试在L5中做一些相同的事情。我在 app / Validators / Validators.php中 放置了一个验证 器 ,并更新了 composer.json 。 但是,现在任何页面上都没有呈现

  • 问题内容: 我正在使用带有自定义验证的Angular2的FormBuilder开发表单。问题:在customValidator中,我用来访问本地对象。执行验证时出现错误。 看起来customValidator是在其他对象中执行的,因此更改了引用 问题: 如何传递对customValidator 的引用? 问题答案: 使用箭头函数,以确保该函数绑定到此:

  • 关于我在Spring安全方面的问题,我想请求你的帮助。我有一个要求,其中我必须验证登录凭据的基础上的选项所选择的用户。选项1将通过第三方服务验证登录用户。选项2将是使用数据库身份验证级别的常规验证。我如何实现这一点?

  • 问题内容: 我有一个用于自定义验证的指令(验证用户名尚不存在)。验证使用$ http服务来询问服务器用户名是否存在,因此返回的是Promise对象。这对于验证非常有用。表单无效,并且包含myform。$ error.usernameVerify,当用户名已被使用时。但是,user.username始终是未定义的,因此它破坏了我的ng- model指令。我认为这可能是因为.success中的函数正在

  • 我正在尝试将自定义密码验证添加到密码字段。密码必须至少包含 8 个字符,并且至少满足以下两个条件,但不必满足所有四个条件: 具有数字 具有小写字母 具有大写字母 具有特殊字符 我已经完成了部分验证工作,但遇到了一个问题,如果密码长度为8个字符,但不满足以上至少两个条件,错误消息将不会显示。只有当密码少于8个字符时,才会显示有关字符的错误。 我在SO中进行了搜索,但没有成功实现类似问题的答案。我怀疑