【问题标题】:Get all validation errors from Angular 2+ FormArray从 Angular 2+ FormArray 获取所有验证错误
【发布时间】:2018-08-05 14:23:08
【问题描述】:
public static getFormErrors(formGroup: FormGroup, server_errors = {}): any {
    let errors = {};

    Object.keys(formGroup.controls).forEach(key => {
        const controlErrors: ValidationErrors = formGroup.get(key).errors;

        if (controlErrors != null) {
            Object.keys(controlErrors).forEach(keyError => {
                errors[key] = SharedModule.readableError(key, keyError, controlErrors[keyError]);
            });
        }
    });

    if (server_errors) {
        Object.keys(server_errors).forEach(key => {
            errors[key] = SharedModule.readableError(key, server_errors[key][0], '');
        });
    }

    return errors;
}

如何从 this.form 中获取所有验证错误(包括 FormArray 和 FormGroup)?

附:上面的当前代码输出

{name: "Name is required", email: "Email is required"}

我希望嵌套输出为

{name: "Name is required", email: "Email is required", "myFormGroup": [{"myControl1": "myControl1 is required"}]}

【问题讨论】:

    标签: angular angular-forms


    【解决方案1】:

    也许有点晚了,或者你已经发现了这一点,但我也遇到了同样的情况。我所做的是遍历数组并查找它是否有效。如果它无效,则获取变量并将其放入错误中。

    这是我的解决方案:

    for (let i = 0; i < this.form.controls['array']['controls'].length; i++){
        if (!this.form.controls['array']['controls'][i]['valid']) {
           let field = this.form.controls['array']['controls'][i]['controls']['fieldname']['value']; // fieldname is the value of your control
           errors[field] = `${field} is required`;
        }   
    }
    

    【讨论】:

    猜你喜欢
    • 2017-04-02
    • 2019-02-06
    • 2018-06-24
    • 1970-01-01
    • 2019-04-28
    • 2015-08-09
    • 2010-12-25
    • 1970-01-01
    相关资源
    最近更新 更多