【发布时间】:2020-01-24 12:11:37
【问题描述】:
我有以下设置:
export class HomePageComponent implements OnInit {
constructor(private httpClient: HttpClient) {
}
nummer: FormControl = new FormControl("", this.nummerValidator());
firstname: FormControl = new FormControl("", [Validators.minLength(3)]);
lastname: FormControl = new FormControl("", [Validators.minLength(3)]);
formGroup: FormGroup = new FormGroup({
firstname: this.firstname,
lastname: this.lastname,
}, this.formGroupValidator());
ngOnInit() {
}
nummerValidator() {
return (control: FormControl): { [key: string]: any } | null => {
if (this.checkEmpty(control.value)) {
this.enableOnNumber();
return null;
}
this.disableOnNumber();
if (isNaN(control.value)) {
return {'forbiddenName': {value: control.value}};
}
return null;
}
}
enableOnNumber() {
this.firstname.enable();
this.lastname.enable();
}
disableOnCardNumber() {
this.firstname.disable();
this.lastname.disable();
}
formGroupValidator() {
return (control: FormGroup): { [key: string]: any } | null => {
//someStuffHere
return errorFound ? {'formGroupError': true} : null;
}
}
当我以这种方式运行它并加载页面时,我收到一条错误消息,指出函数 enableOnNumber 中的 this.firstname 和 this.lastname 为空。请注意,函数 disableOnNumber 工作正常。
但是,当我在没有验证器的情况下初始化数字 FormControl 并在 ngOnInit 函数中设置验证器时,一切正常。这是为什么?有什么解释吗?
它是这样工作的:
nummer: FormControl = new FormControl();
ngOnInit() {
this.nummer.validator = this.NummerValidator();
}
【问题讨论】:
标签: angular typescript form-control