У меня есть группа форм в моей угловой форме. Я хотел бы применить настраиваемый валидатор «черного списка» ко всей группе, а не к каждому полю.
Есть ли способ проверить, проходит ли каждое поле валидатор, не применяя его к каждому контроллеру? Я предполагаю, что это будет проверка группы, а не каждого поля отдельно. Это возможно?
Прямо сейчас делаю:
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;
}
}
}