Javascript 如何在angular上向反应表单添加特定验证

Javascript 如何在angular上向反应表单添加特定验证,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,我试图根据特定的错误呈现一个div,我的表单可以工作,但是有bug,并且出现了类型错误,“undefined不是一个对象”,我不明白为什么;有人能帮我理解我错过了什么吗?我已经尝试通过使用.errors属性来简化我的代码,它可以消除错误,但不够具体,因此它不知道根据表单的状态呈现什么错误,任何细节都会非常有用:) HTML 自定义验证器.TS import { AbstractControl, ValidationErrors, } from '@angular/forms'; export

我试图根据特定的错误呈现一个div,我的表单可以工作,但是有bug,并且出现了类型错误,“undefined不是一个对象”,我不明白为什么;有人能帮我理解我错过了什么吗?我已经尝试通过使用.errors属性来简化我的代码,它可以消除错误,但不够具体,因此它不知道根据表单的状态呈现什么错误,任何细节都会非常有用:)

HTML

自定义验证器.TS

import { AbstractControl, ValidationErrors, } from '@angular/forms';


export class CustomValidators {
    static passwordValidator(control: AbstractControl): Promise<ValidationErrors | null> {

        return new Promise((resolve, reject) => {
            setTimeout(() => {
                if (control.value === "123") {
                    resolve({ passwordValidator: true })
                }
                resolve(null)
            }, 2000);
        });


    }
}
从'@angular/forms'导入{AbstractControl,ValidationErrors,};
导出类CustomValidator{
静态密码验证器(控件:AbstractControl):Promise{
返回新承诺((解决、拒绝)=>{
设置超时(()=>{
如果(control.value==“123”){
解析({passwordValidator:true})
}
解析(空)
}, 2000);
});
}
}

您有一些问题

  • 加载…
    ,从
    表单中删除
    s
  • 
    
    import { Component } from '@angular/core';
    import { FormBuilder, Validators, FormGroup, FormControl,} from '@angular/forms'
    import { CustomValidators } from '../passwordValidator';
    
    @Component({
      selector: 'app-form',
      templateUrl: './form.component.html',
      styleUrls: ['./form.component.css']
    })
    export class FormComponent {
    form = new FormGroup({
      oldPassword: new FormControl('',Validators.required, CustomValidators.passwordValidator),
      newPassword: new FormControl('',Validators.required),
      confirmPassword: new FormControl('',Validators.required)
    
    })
    
    onClick() {
      console.log(this.form.get('oldPassword').errors)
    }
    }
    
    
    //CustomValidators.passwordValidator
    
    import { AbstractControl, ValidationErrors, } from '@angular/forms';
    
    
    export class CustomValidators {
        static passwordValidator(control: AbstractControl): Promise<ValidationErrors | null> {
    
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    if (control.value === "123") {
                        resolve({ passwordValidator: true })
                    }
                    resolve(null)
                }, 2000);
            });
    
    
        }
    }