0

我是堆栈溢出的新手,如果这篇文章有任何问题,我深表歉意。我尝试了各种替代方案,但没有找到任何解决方案。我只是在寻找建议。有人可以告诉我下面的代码有什么问题吗。感谢您的帮助

我收到错误,“productValidatorDirective”类型中的属性“验证”不能分配给基类型“AsyncValidator”中的相同属性

这是 Angular 9 中的场景,我正在尝试在模板驱动表单中使用带有输入类型文本的自定义验证器。我正在进行 api 调用并尝试验证 ID 是否存在,如果存在则向用户显示错误 - ID 可用。

<input type="text" class="form-control" id="productIDInput" ngModel name="productIDInput" #productIDInput="ngModel"  [value]="validateInputKeys" productValidator>



    @Directive({
     selector: '[productValidator]',
     providers: [
     {
      provide: NG_ASYNC_VALIDATORS,
      useExisting: productValidatorDirective,
      multi: true
     }
      ]
     })
     export class productValidatorDirective implements AsyncValidator {
     @Input("Id") Id: string
     constructor(private http: HttpClient, private service: productService) {  }
      validate(control: FormControl): Promise<any> | Observable<any> | { [key: string]: any } | null  
      {
         var pArray: Array<PDocument>;
         const promise = new Promise<any>(
         (resolve, reject) => {
          this.service.getId(this.Id)
              .subscribe(
                (data: any) => {
                   pArray = data;
                   let isAvailable = pArray.some(function (el) { return el.code === control.value });
                   if (isAvailable) {
                      resolve({ IdExists : true });
                   }
                   else {
                     resolve(null);
                  }
                 },
                 )
                 });
                 return promise;
4

0 回答 0