【问题标题】:How to pass extra param to an async validator (reactive forms) in Angular?如何将额外的参数传递给 Angular 中的异步验证器(反应形式)?
【发布时间】:2017-08-09 19:24:31
【问题描述】:

我有以下异步验证器。如果我想将它用于反应形式,我必须将它作为第三个参数传递

slug: [null, [Validators.required], [CustomValidators.slug]],

如何将额外的参数传递给验证器?

import {FormControl} from "@angular/forms";

interface IValidation {
    [key: string]: boolean;
}

export class CustomValidators {

static slug(control: FormControl) {
    const q = new Promise<IValidation>((resolve, reject) => {
        setTimeout(() => {
            if (control.value === 'TEST') {
                resolve({'duplicated': true});
            } else {
                resolve(null);
            }
        }, 1000);
    });
    return q;
}
}

如果我把它当作

slug: [null, [Validators.required], [CustomValidators.slug('string param')]],

问题是第一个参数是控件。

【问题讨论】:

    标签: angular angular-reactive-forms angular-validation


    【解决方案1】:

    这样写你的验证:

    static slug(param: string) {
      return (control: FormControl) => {
        const q = new Promise<IValidation>((resolve, reject) => {
          setTimeout(() => {
            if (control.value === 'TEST') {
              resolve({'duplicated': true});
            } else {
              resolve(null);
            }
          }, 1000);
        });
        return q;
      };
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 2012-04-27
      相关资源
      最近更新 更多