我的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 :(得分:0)
你应该返回一个这样的错误对象: return {valid:false};如果验证失败。如果成功则为null。