Как мы можем установить проверку синхронизации нулевой при добавлении асинхронной угловой проверки? - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь создать элемент управления с асинхронной проверкой, и я не хочу синхронизацию:

Создание формы с помощью formBuilder.

  this.myForm = this.fb.group({ 
    someControl: new FormControl(
        "",
        null,
        [this.valueUnique.bind(this)]
      )})

Если я сохраню параметр проверки синхронизации как Validators.required, я не получу ошибку.

Ошибка:

Ошибка: ожидаемый валидатор вернет Promise или Observable. в toObservable (forms.js: 603) в Array.map () в FormControl.asyncValidator (forms.js: 591) at FormControl.push ../ node_modules/@angular/forms/fesm5/forms.js.AbstractControl._runAsyncValidator (forms.js: 2535) at FormControl.push ../ node_modules/@angular/forms/fesm5/forms.js.AbstractControl.updateValueAndValidity (forms.js: 2508) at FormControl.push ../ node_modules/@angular/forms/fesm5/forms.js.AbstractControl._updateTreeValidity (forms.js: 2523) at forms.js: 2522 at forms.js: 3309 в Array.forEach () в FormGroup.push ../ node_modules/@angular/forms/fesm5/forms.js.FormGroup._forEachChild (forms.js: 3309)

Функция валидатора:

 /**
   * Validator to checking existance/uniqueness
   * of entered value
   * @param control
   */
   valueIsUnique(control: AbstractControl): Promise<ValidationErrors|null> | null {
    if (control && (control.value !== null && control.value !== undefined)) {
      return new Promise((resolve, reject) => {
        this.service.checkValueExists(control.value).subscribe(res => {
         {
            if (res && res['data']) {
              resolve({
                unique: true
              });
            }
              else {
                resolve(null);
            }
           }
          },
            err=>
          {
            resolve(null);
          });
    });
  }
  }
...