2017-08-09 45 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; 
    }; 
} 
相關問題