2016-07-25 25 views
0

我与Angular2表单验证和棒试验,以检查是否值已经采取:给予额外的参数,以自定义验证

namesArray = Users[]; 
ngOnInit() { 
this.myForm = this.fb.group({ 
     name: ['', Validators.compose([ 
     Validators.required, 
     this.nameValidator 
     ]) 
     ], 
}) 
} 

nameValidator(control:FormControl):{[key:string]:boolean} { 
    console.log(this.namesArray); 
    return null; 
} 

这将返回我一个错误:

无法读取属性“ namesArray'的undefined

当我打印this是返回undefined。那么如何访问函数外部的数组?

+0

你极力挽留像'this.nameValidator.bind(这)'背景? – yurzui

回答

4

你需要脂肪箭头功能通过保留this

ngOnInit() { 
this.myForm = this.fb.group({ 
     name: ['', Validators.compose([ 
     Validators.required, 
     (control) => this.nameValidator(control as FormControl) 
     ]) 
     ], 
}) 
} 

更多脂肪箭头位置:https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html

+0

返回''AbstractControl'类型的参数不能分配给'FormControl'类型的参数 – mimo

+0

嘿,我编辑它。您可以在使用胖箭头时将其转换为“FormControl”,或更改验证函数的签名以允许“AbstractControl”参数。 –