微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在异步验证器中递归地发出事件错误触发-角指示性形式

如何解决在异步验证器中递归地发出事件错误触发-角指示性形式

我有使用反应形式,形式有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 举报,一经查实,本站将立刻删除。