重复密码验证不起作用 [英] Repeat password validation not working

查看:36
本文介绍了重复密码验证不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试验证密码并在表单中重复密码.像这样

I am trying to validate password and repeat password in a form. Like this

import { FormGroup, FormBuilder, Validators, AbstractControl } from '@angular/forms';

 this.registerForm = fb.group({
        name: ['', Validators.required],
        email: ['', Validators.compose([Validators.pattern("[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"), Validators.required])],
        passwords: this.fb.group({
            password: ['', Validators.compose([Validators.required])],
            repassword: ['', Validators.compose([Validators.required])]
          }, this.comparePassword)
    });

function comparePassword(c: AbstractControl) {
return c.get('password').value === c.get(' repassword').value

}

** 我也尝试在 comparePassword 中传递 return false 为:

** I also tried passing return false in comparePassword as:

comparePassword(c: AbstractControl) {
      return false;
  }

** 但每次 console.log(this.registerForm.valid);给我真,但如果我在密码和重复密码中提供不同的输入,它应该返回假.所以请帮助如何解决这个问题.提前致谢

** but every time console.log(this.registerForm.valid); gives me true, but it should return false if i am giving different inputs in password and repeatpassword. So please help how to resolve this. Thanks in advance

推荐答案

这应该可行

  comparePassword = (control: AbstractControl): {[key: string]: boolean} => {
    // get values
    const password = control.get('password');
    const repassword = control.get('repassword');
    // if no values, validated as true
    if (!password || !repassword) {
      return null;
    }
    // if values match, return null, else nomatch: true
    return password.value === repassword.value ? null : { nomatch: true };
  };

然后在您的表单构建中,设置:

and then in your build of form, set:

{validator: this.comparePassword}

this.registerForm = fb.group({
    name: ['', Validators.required],
    email: ['', Validators.compose([Validators.pattern("[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"), Validators.required])],
    passwords: this.fb.group({
        password: ['', Validators.compose([Validators.required])],
        repassword: ['', Validators.compose([Validators.required])]
      },{validator: this.comparePassword}) // here
});

这篇关于重复密码验证不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆