Angular 自定义验证器不';我不能改变我的课程
我的console.log的工作方式与我想要的完全相同,但在所有情况下都会打印错误。我可以看出这是因为我的ngclass只显示错误模式 我的表格:Angular 自定义验证器不';我不能改变我的课程,angular,forms,Angular,Forms,我的console.log的工作方式与我想要的完全相同,但在所有情况下都会打印错误。我可以看出这是因为我的ngclass只显示错误模式 我的表格: this.registerForm = this.formBuilder.group({ pseudo: ['', [Validators.required, Validators.minLength(4)]], birthDate: ['', [Validators.required, majorValidator()]], email: [
this.registerForm = this.formBuilder.group({
pseudo: ['', [Validators.required, Validators.minLength(4)]],
birthDate: ['', [Validators.required, majorValidator()]],
email: ['', [Validators.required]],
password: ['', [Validators.required, Validators.minLength(8)]],
});
我的自定义验证器:
export function majorValidator(): ValidatorFn {
return (control: AbstractControl): { [key: string]: any } | null => {
if (control.value !== '') {
const diff = (Date.now().valueOf() - control.value) / (1000 * 60 * 60 * 24) / 365;
if (diff > 18) {
console.log('ok');
return {'ageValid': {value: control.value}};
} else {
return null;
}
}
return null;
};
}
在我看来:
<div class="birthDate-response row mx-auto">
<span class="mx-auto no-valid " *ngIf="f.birthDate.ageValid""> Vous devez avoir 18 ans au minimum </span>
</div>
你应该仔细看看角度文档。您对验证函数的理解不是100%正确:
It takes an Angular control object as an argument and returns either null if the form is valid, or ValidationErrors otherwise.
所以,基本上,当值有效时,您忘记返回null
你需要至少18岁?也许你需要反转你的圆锥曲线:
if (control.value !== '') {
const diff = (Date.now().valueOf() - control.value) / (1000 * 60 * 60 * 24) / 365;
if (diff > 18) {
console.log('ok');
return null;
} else {
return {'ageValid': {value: control.value}};
}
}
return null;
另外,这有点奇怪:Date.now().valueOf()
-您的用户将以刻度输入他的年龄:) 谢谢我更新了文档:。但我的错误是没有打印出来:/