Групповая проверка против проверки контроля в формах 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;
        }
    }
}

person Ben Racicot    schedule 27.08.2017    source источник


Ответы (1)


Вы должны вернуть объект ошибки, подобный этому: return {valid: false}; если проверка не удалась. Или null, если это удалось.

person S. Robijns    schedule 27.08.2017