我有4个表单字段,我想检查使用被动表单的'oldpass'和'newpass'字段是否相同。
this.changePasswordForm = fb.group({
'oldpass': ['', Validators.compose([Validators.required, Validators.minLength(6)])],
'newpass': ['', Validators.compose([Validators.required, Validators.minLength(6)])],
'confirmpass': ['', Validators.compose([Validators.required])],
'otp': ['']
},{validator: CustomValidator.matchConfirmFields('newpass', 'confirmpass')});
我可以使用以下代码验证'newpass'和'confirmmpass'字段。
static matchConfirmFields(pass: string, confirmpass: string) {
return (group: FormGroup): {[key: string]: any} => {
let spass = group.controls[pass];
let sconfirmpass = group.controls[confirmpass];
if (spass.value !== sconfirmpass.value) {
return {
mismatchedPasswords: true
};
}
}
}
如何以类似的方式验证'oldpass'和'newpass'字段。
答案 0 :(得分:1)
我的回答改变了FormGroup中验证器的方式。 首先,我们将为您的班级添加新的验证程序功能 。 它只将抽象控件与字符串进行比较,没有什么特别之处 有一个等于或不等的选项。
public partial class Partial : I1, I2
{
public void A() { }
public void B() { }
}
现在在FormGroup中,我们将它添加到控件中,我们希望将它添加到使用它的所有控件中,并表示如何处理它。
public confirmPasswordValidator(control: AbstractControl, compareValue: string, equal: boolean = true): null | {} {
if ((control.value === compareValue) === equal) {
return null;
}
return {
confirmPassword: {
valid: false
}
}
}