如何在Angular中向异步验证器(反应式表单)传递额外的参数?

如何在Angular中向异步验证器(反应式表单)传递额外的参数?,angular,angular-reactive-forms,angular-validation,Angular,Angular Reactive Forms,Angular Validation,我有下面的异步验证器。如果我想将其用于反应形式,我必须将其作为第三个参数传递 slug: [null, [Validators.required], [CustomValidators.slug]], 如何将额外的参数传递给验证器 import {FormControl} from "@angular/forms"; interface IValidation { [key: string]: boolean; } export class CustomValidators {

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

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;
}
}
从“@angular/forms”导入{FormControl}”;
界面氧化{
[键:字符串]:布尔值;
}
导出类CustomValidator{
静态段塞(控制:FormControl){
const q=新承诺((解决、拒绝)=>{
设置超时(()=>{
如果(control.value==='TEST'){
解析({'duplicated':true});
}否则{
解析(空);
}
}, 1000);
});
返回q;
}
}
如果我把它当作

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


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

按如下方式编写验证:

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;
  };
}
静态段塞(参数:字符串){
返回(控件:FormControl)=>{
const q=新承诺((解决、拒绝)=>{
设置超时(()=>{
如果(control.value==='TEST'){
解析({'duplicated':true});
}否则{
解析(空);
}
}, 1000);
});
返回q;
};
}