Angular 自定义验证器不';我不能改变我的课程

Angular 自定义验证器不';我不能改变我的课程,angular,forms,Angular,Forms,我的console.log的工作方式与我想要的完全相同,但在所有情况下都会打印错误。我可以看出这是因为我的ngclass只显示错误模式 我的表格: this.registerForm = this.formBuilder.group({ pseudo: ['', [Validators.required, Validators.minLength(4)]], birthDate: ['', [Validators.required, majorValidator()]], email: [

我的console.log的工作方式与我想要的完全相同,但在所有情况下都会打印错误。我可以看出这是因为我的ngclass只显示错误模式

我的表格:

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()
-您的用户将以刻度输入他的年龄:)

谢谢我更新了文档:。但我的错误是没有打印出来:/