2017-08-27 12 views
0

私は角型でフォームグループを持っています。私はカスタム "ブラックリスト"バリデーターを各フィールドではなく、グループ全体に適用したいと思います。グループ検証と角型のコントロール検証

はそれぞれすべてのフィールドは、各コントローラにそれを適用せずにバリデータを渡すことを確認するための適切な方法はありますか?私はそれが別々のフィールドの代わりにグループを検証するだろうと思う。それは可能ですか?

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

あなたは、このようなエラーオブジェクトを返す必要があります。 リターン{有効:falseが};検証が失敗した場合成功した場合はnull。