问题描述
我有使用反应形式,形式有60个字段。所以我写了asyncvalidtors进行服务器端验证。
注意:不使用值更改机制。它适用于以下两行
formGroup.ProductId.setErrors(null,{ onlySelf: true,emitEvent: false });
formGroup.ProductId.updateValueAndValidity({ onlySelf: true,emitEvent:false});
验证程序机制问题
在以下情况下,我遇到了一个问题。在异步验证器中,如果productName控件有效并且为productId字段设置error null,则我有用例。我设置了错误,并在执行updateValueandValidity时向服务器发送另一个请求。
if(result.controlName =='ProductName' && result.Validation==true){
// if control Name is productName // set Errors as Null for Product ID
formGroup.ProductId.setErrors(null,emitEvent: false });
formGroup.ProductId.updateValueAndValidity({ onlySelf: true,emitEvent: false });
//But it recursively call while perform this line
}
验证者
export class SomeAsyncValidator {
static createValidator = (someService: SomeService) => (control: AbstractControl) =>
timer(500)
.pipe(
debounceTime(2000)
// If prevIoUs query is different from current,distinctUntilChanged(),map(() => control.value),switchMap((name) => someService.exists({ request })),map(() => ({
if(result.controlName =='ProductName' && result.Validation==true){
// if control Name is productName // set Errors as Null for Product ID
formGroup.ProductId.setErrors(null,emitEvent: false });
//But it recursively call while perform this line
}
})),catchError(() => of(null)));
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)