0

我的 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;
        }
    }
}
4

1 回答 1

0

你应该像这样返回一个错误对象:return { valid: false }; 如果验证失败。如果成功,则为 null。

于 2017-08-27T08:46:53.137 回答