是否有人知道一种方法来查找Angular2 FormControl(如果为控件注册了所需的验证器)。

this.form = builder.group({name: ['', Validators.required]};

然后可以查询this.form.controls['name']控件是否为必填字段吗?我知道我可以检查它是否有效,但这不是我想要的。

亲切的问候,
马克

最佳答案

此函数应适用于FormGroups和FormControls

  export const hasRequiredField = (abstractControl: AbstractControl): boolean => {
    if (abstractControl.validator) {
        const validator = abstractControl.validator({}as AbstractControl);
        if (validator && validator.required) {
            return true;
        }
    }
    if (abstractControl['controls']) {
        for (const controlName in abstractControl['controls']) {
            if (abstractControl['controls'][controlName]) {
                if (hasRequiredField(abstractControl['controls'][controlName])) {
                    return true;
                }
            }
        }
    }
    return false;
};

10-06 04:04