为了账号安全,请及时绑定邮箱和手机立即绑定

angular4中响应式表单的验证如何做到统一错误处理?

angular4中响应式表单的验证如何做到统一错误处理?

开心每一天1111 2019-02-25 20:17:40
各位大家,请问下angular4中响应式表单的验证如何做到统一错误处理?我看了angular4的很多例子(包含官网),验证错误都是单独写的如: <div nz-form-control nz-col [nzSpan]="8" nzHasFeedback [nzValidateStatus]="getFormControl('name')">            <nz-input formControlName="name" [nzId]="'name'"></nz-input>            <div nz-form-explain *ngIf="validateFormControl('name','required')">名称必填</div>            <div nz-form-explain *ngIf="validateFormControl('name','rangeLength')">名称最多100个字符 </div>            <div nz-form-explain *ngIf="validateFormControl('name','servererror')" class="servererror">{{getErrorValueForFormControl('name','servererror')}}</div>        </div>这样界面感觉好多重复代码,能不能做统一处理,如检查的名称没有填写,自动生成<div nz-form-explain *ngIf="validateFormControl('name','required')">名称必填</div>这段代码谢谢!
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

可以的。简略代码如下:

html:


  <input type="text"  formControlName="account">

  <div *ngIf="formErrors.account" class="alert alert-danger">{{ formErrors.account }}</div>

  

  <input type="password"  formControlName="password">

  <div *ngIf="formErrors.password" class="alert alert-danger">{{ formErrors.password }}</div>

  

ts:


editForm: FormGroup;

formErrors = {

    'account': '',

    'password': ''

};


validationMessages = {

    'account': {

        'required': '请输入用户名',

        'maxlength': '用户名不能超过20位'

    },

    'password': {

        'required': '请输入密码',

        'minlength': '密码至少6位',

        'maxlength': '密码必须小于16位',

        'pattern': '密码需要包含大小写和数字'

    }

};


 ngOnInit() {

 

 this.editForm = new FormGroup({

            account: new FormControl('', [Validators.required, Validators.maxLength(20)]),

            password: new FormControl('', [

                Validators.minLength(6),

                Validators.maxLength(16),

                Validators.required,

                Validators.pattern('^(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])[0-9a-zA-Z]{6,16}$')

            ])

        });

        

  this.editForm.valueChanges.subscribe(() => this.onValueChanged());   // 监听每次输入内容,获得错误信息

  }

  

  onValueChanged() {

    for (const item in this.formErrors) {

        this.formErrors[item] = '';

        for (const key in this.editForm.get(item).errors) {

            this.formErrors[item] += this.validationMessages[item][key] + ' ';

        }

    }

}

  


查看完整回答
反对 回复 2019-03-02
  • 1 回答
  • 0 关注
  • 1277 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号