Mobile mobileNumberValidator 返回正常,但其他两个验证器在出现错误时返回 null 承诺。无法识别我在这里犯的错误。请帮忙。 这两个验证器在 formbuilder 对象中设置错误,如下所示
错误 : {__zone_symbol__state:空,__zone_symbol__value:数组(0)}
在表单构建器组中
this.empInfoForm = this.fb.group({
'Mobile': [null, [Validators.required], [this.mobileNumberValidator.bind(this)]],
'Private': [null, [this.privateNumberValidator.bind(this)]],
'Work': [null, [this.workNumberValidator.bind(this)]],
});
验证器方法
mobileNumberValidator(control: AbstractControl) {
return new Promise(resolve => {
setTimeout(() => {
if (!this.isMobileNumberValid) {
resolve({
'phoneNumber': true
})
console.log(this.empInfoForm)
} else {
resolve(null);
}
}, 10);
})
}
workNumberValidator(control: AbstractControl) {
return new Promise(resolve => {
setTimeout(() => {
if (!this.isWorkNumberValid) {
resolve({
'phoneNumber': true
})
console.log(this.empInfoForm)
} else {
resolve(null);
}
}, 10);
})
}
privateNumberValidator(control: AbstractControl) {
return new Promise(resolve => {
setTimeout(() => {
if (!this.isPrivateNumberValid) {
resolve({
'phoneNumber': true
})
console.log(this.empInfoForm)
} else {
resolve(null);
}
}, 10);
})
}
我发现我在这里犯了错误。自定义验证器绑定应该是此处的第三个参数。
this.empInfoForm = this.fb.group({
'Mobile': [null, [Validators.required], [this.mobileNumberValidator.bind(this)]],
'Private': [null,null,[this.privateNumberValidator.bind(this)]],
'Work': [null,null,[this.workNumberValidator.bind(this)]],
});
In IONIC
if you facing issue in IONIC
error :- __zone_symbol__state: null, __zone_symbol__value: Array(0)
======================== Sol
// use platform ready function, its must
this.platform.ready().then(() => {
// use promise like syntax not like this.appVersion.getVersionNumber()
this.appVersion.getVersionNumber().then((data) => {
})
})
如果将 AsyncValidator 绑定到
validators
字段而不是表单控件的 asyncValidators
字段,则会出现此错误
如果你使用 Promise,你的回调中应该有 2 个参数:
return new Promise((resolve, reject) => { ...});
当你想将错误设置为true时,你需要拒绝promise:
if (!this.isMobileNumberValid) {
resolve({'phoneNumber': true});
console.log(this.empInfoForm)
} else { reject(null); }