美文网首页
angular表单校验

angular表单校验

作者: 窗外的雪儿飞 | 来源:发表于2019-04-18 16:21 被阅读0次

最近在写项目的时候,产品要求对表单的必填输入项进行友好的校验提示,效果如图:


表单校验提示

" 这个需求很简单,怎么实现我不管。 " ,还能说什么,就是干,具体实现如下:

  1. 对Angular内置的表单css属性设置想要的样式
// css样式
.isvalid {
    border: 1px dashed red !important;
}
  1. html文件里设置即时样式检测[class.isvalid]
<!--非formArray-->
<input formControlName="addressName [class.isvalid]="isFieldInvalidTouched('addressName')" type="text" placeholder="请输入收件人姓名">
<!--formArray-->
<input formControlName="addressName [class.isvalid]="isArrayFieldInvalidTouched(i, 'addressName')" type="text" placeholder="请输入收件人姓名">
  1. ts文件里注入核心方法
// 表单字段校验
validateAllFormFields(formGroup: any) {
    Object.keys(formGroup.controls).forEach(field => {
      const control = formGroup.get(field);
      if (control instanceof FormControl) {
          control.markAsTouched({ onlySelf: true });
      } else if (control instanceof FormGroup) {
          this.validateAllFormFields(control);
      } else if (control instanceof FormArray) {
          this.validateAllFormFields(control);
      }
    });
 }

// 表单控件校验
isFieldInvalidTouched(field: any) {
    return this.form.get(field).invalid && this.form.get(field).touched;
}

// 表单控件校验
isArrayFieldInvalidTouched(index, field: any) {
      return this.xxxArray.controls[index].get(field).invalid &&this.xxxArray.controls[index].get(field).touched;
}

// 获取FormArray
get xxxArray(): FormArray {
    return this.form.get('xxxArray') as FormArray;
}

// 设置FormArray
set setXxxArray() {
    // TODO
}

// 表单提交
ensure() {
    if (!this.form.valid) {
        this.validateAllFormFields(this.form);
        this.orderService.presentToast('表单信息不全, 请填写完整~');
    } else {
        // TODO
    }
}

相关文章

  • 表单校验——校验响应式表单

    表单校验 Angular的校验器 angular提供了一组预定义的校验器,这些校验器都是定义在angular的fo...

  • angular表单校验

    最近在写项目的时候,产品要求对表单的必填输入项进行友好的校验提示,效果如图: " 这个需求很简单,怎么实现我不管。...

  • 15.《Angular表单校验》

    一、使用Angular自带的表单校验器 运行结果: 二、自定义表单校验器 当然我们也可以将验证器方法独立出来 使用...

  • 5表单校验上

    test() 方法用于检测一个字符串是否匹配某个模式.目标Angular的校验器:普通的方法校验响应式表单校验模板...

  • 动态表单实现

    angular动态表单 地址: angular表单 vue动态表单 地址: vue表单

  • Angular2 表单校验

    曾自己借助阿里云和hexo搭了个站点,现已废弃,过往写的博客暂挪到此处。 title: Angular2 表单校验...

  • Angular 表单校验触发时机

    文章转自我的语雀:https://www.yuque.com/liuyin-zzwa0/angular/form-...

  • AngularJs 表单字段合法性校验

    AngularJs 表单字段合法性校验 基于AngularJS入门与进阶(江荣波 著)这本书的笔记 Angular...

  • Angular2 表单校验 - 自定义校验

    曾自己借助阿里云和hexo搭了个站点,现已废弃,过往写的博客暂挪到此处。 title: Angular2 表单校验...

  • Element-UI表单验证

    校验规则 表单通过rules属性绑定校验规则对象,表单项通过prop属性绑定具体校验规则 注意校验的字段必须和表单...

网友评论

      本文标题:angular表单校验

      本文链接:https://www.haomeiwen.com/subject/syrtgqtx.html