首页 > 解决方案 > Angular:设置自定义错误和编辑字段的方法

问题描述

在表单中,每当出现错误时,清除文本字段并设置错误如下

switch(result){
    case "SUCCESS":
        // success case
    case "ERROR1":
            this.Form.controls.text1.setValue('');
            this.Form.controls.text2.setValue('');
            this.Form.controls.text1.setErrors({ 'error1': true });
            break;
    case "ERROR2":
            this.Form.controls.text1.setValue('');
            this.Form.controls.text2.setValue('');
            this.Form.controls.text1.setErrors({ 'error2': true });
            break;
    case "ERROR3":
            this.Form.controls.text1.setValue('');
            this.Form.controls.text2.setValue('');
            this.Form.controls.text1.setErrors({ 'error3': true });
            break;
}

为了避免重复行,写了一个方法如下

setError(error : string){
    this.Form.controls.text1.setValue('');
    this.Form.controls.text2.setValue('');
    this.Form.controls.text1.setErrors({ error: true });
}

switch(result){

    case "SUCCESS":
        // success case
    case "ERROR1":
            setError('error1');
            break;
    case "ERROR2":
            setError('error2');
            break;
    case "ERROR3":
            setError('error3');
            break;
}

字段越来越清晰,但无法设置错误。任何关于如何将特定错误设置为真的建议。

标签: angularformstypescript

解决方案


根据您的问题,我推断的是,您正在尝试清除字段并将错误设置为您的 formControls。

要为字段设置错误,

this.Form.get('controlName').setErrors({notUnique: true});

要重置表单中的所有字段,

this.Form.reset();

此外,如果您想使用自定义验证器验证您的表单,请参阅以下链接: https ://alligator.io/angular/reactive-forms-custom-validator/


推荐阅读