2017-08-27 71 views
0

我的窗体组以角度形式存在。我想将自定义“黑名单”验证程序应用于整个组,而不是每个字段。Group验证与Angular窗体中的对照验证

有没有一种合适的方法来检查每个字段是否通过验证程序而不将其应用于每个控制器?我想这将验证组而不是每个领域分开。那可能吗?

现在我做:

this.form = this.fb.group({ 
    firstName: ['Ben', [Validators.required, AlphaValidator]], 
    lastName: this.fb.control('Racicot', [Validators.required, Validators.maxLength(30), AlphaValidator.invalidAlpha ]), 
}, { validator: Blacklist }); 

但我得到的错误。大概是因为我拥有的黑名单验证器不是针对一个组,而是一个控件。我是否应该专注于更改验证器来检查表单中的每个控件或执行组验证有何不同?

这是我建立的验证:

import { AbstractControl } from '@angular/forms'; 

const blacklist = [ // bunch of bad words ]; 

export function Blacklist(control: AbstractControl) { 

    let comment = control.value.split(' '); 

    // blacklist.includes(comment[i]); // es6 
    for (let i = 0, j = comment.length; i < j; i++) { 
     if (blacklist.indexOf(comment[i]) > -1) { 
      console.log(comment[i]); 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

回答

0

你应该返回一个错误的对象是这样的: 回报{有效:假};如果验证失败。如果成功则返回null。