它有效,这是其他地方的错误.创建自定义验证程序



我正在自定义我的表单并创建自己的验证器。但我做错了,因为它总是崩溃:

**my-component.ts**
export function ageRangeValidator(min: number, max: number): ValidatorFn {
return (control: AbstractControl): { [key: string]: boolean } | null => {
if (control.value !== undefined && (isNaN(control.value) || control.value < min || control.value > max)) {
return { 'ageRange': true };
}
return null;
};
}
@Component({
selector: 'my-component',
templateUrl: './my-component.html',
styleUrls: ['./my-component.scss'] 
})
export class MyComponent implements OnInit {
form: FormGroup;
constructor(private fb: FormBuilder) {
}
ngOnInit() {
this.form = this.fb.group({
name: ['', [Validators.required],
age: ['', [Validators.required, ageRangeValidator(20, 30)]]
}
}

创建表单时,I 它崩溃了

Error: formGroup expects a FormGroup instance. Please pass one in.
Example:

<div [formGroup]="myGroup">
<input formControlName="firstName">
</div>
In your class:
this.myGroup = new FormGroup({
fistName: new FormControl()
});

如果我删除表单定义中的验证器,它可以工作。

我做错了什么?

// in your form 
age   : ['', [Validators.required, this.ageRangeValidator, Validators.maxLength(100)]],
// function in same class
public ageRangeValidator(control: FormControl) { 
const isValid = control.value > 30  && control.value < 30;
return isValid ? null : { ageRange: true };
}

你的年龄是一个字符串,在你的验证器中,你正在比较数字。请确保使用正确的类型。为什么不使用数字输入字段和最大+最小验证器?

相关内容

  • 没有找到相关文章

最新更新