Angular6 是否可以创建一个自定义formcontrol验证函数,该函数对反应式表单具有依赖关系
我有一个反应式表单,其中有“密码”和“验证密码”字段。我想为“验证密码”字段创建自定义验证函数。它应该检查“验证密码”的值是否与“密码”相同。是否可以创建这样的验证函数并在创建表单控件时使用它 'formcontrol:[null,myValidationFunction]' 据我所知,验证函数接受“FormControl”并返回一个对象。没有办法向它传递另一个论点Angular6 是否可以创建一个自定义formcontrol验证函数,该函数对反应式表单具有依赖关系,angular6,Angular6,我有一个反应式表单,其中有“密码”和“验证密码”字段。我想为“验证密码”字段创建自定义验证函数。它应该检查“验证密码”的值是否与“密码”相同。是否可以创建这样的验证函数并在创建表单控件时使用它 'formcontrol:[null,myValidationFunction]' 据我所知,验证函数接受“FormControl”并返回一个对象。没有办法向它传递另一个论点 我已经读到我可以创建一个“指令”,但示例将其用于“模板”驱动的表单 实现这一点的一种方法是将密码和verifyPassword放入
我已经读到我可以创建一个“指令”,但示例将其用于“模板”驱动的表单 实现这一点的一种方法是将密码和verifyPassword放入一个单独的数据库中。然后可以将此formGroup传递给自定义验证函数,该函数将AbstractControl类型作为formGroup扩展的arugument。所以你可以这样做: template.html
谢谢看起来它会工作,但目前,我正努力让嵌套表单工作。你能看看你的解决方案吗。我无法解决嵌套表单问题,但由于我有顶级表单,我在顶级表单中添加了
passwordValidator
。我将尝试解决嵌套表单问题,但这与此无关。谢谢
<form [formGroup]="main">
<!-- Other FormControls -->
<div formGroupName="passwordGroup">
<!-- input element for password FormControl -->
<!-- input element for verifyPassword FormControl -->
</div>
</form>
function passwordValidator(c: AbstractControl) : {[key: string] : boolean} | null {
let password = c.get('password');
let verifyPassword = c.get('verifyPassword');
if(password.value === verifyPassword.value)
return null;
else
return {'match' : true};
}
ngOnInit() {
this.main = this.fb.group({
otherFormControls : [''],
passwordGroup: this.fb.group({
password: ['',[Validators.required],
verifyPassword: ['',Validators.required]
},{validator : passwordValidator})
});}