2017-08-09 47 views
0

我有以下异步验证程序。如果我想用它来一个反应形式,我不得不把它当作第三个参数如何将额外的参数传递给Angular中的异步验证器(反应形式)?

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; 
} 
} 

如果我用它作为

蛞蝓:[NULL,[Validators.required],[CustomValidators.slug( '字符串PARAM')]],

的问题是,所述第一参数是控制。

回答

0

写下您的验证这样的:

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; 
    }; 
} 
相关问题