angular 表单常用验证

  • html监听验证
<nz-form-control>
  <nz-form-label class="label" nzFor="integral">积分值</nz-form-label>
  <input name="integral" 
    nz-input 
    placeholder="" 
    formControlName="point" 
    placeholder="请输入积分的值!"
    type="number"
    maxlength="8"
    onkeyup="this.value=this.value.replace(/\D|^0/g,'')" 
    onafterpaste="this.value=this.value.replace(/\D|^0/g,'')"/>
  <nz-form-explain  *ngIf="mainForm.get('point')?.dirty && mainForm.get('point')?.hasError('required')">
    请输入积分值!
  </nz-form-explain>
  <nz-form-explain  *ngIf="mainForm.get('point')?.dirty && mainForm.get('point')?.hasError('numberErr')">
    积分值介于1 ~ 99999999之间!
  </nz-form-explain>
</nz-form-control>

  • ts
ngOnInit() {
  this.mainForm = this.fb.group({
    point: [null, [Validators.required, this.numberValidator]],
    radioValue: [null, [Validators.required,  ]]
  });
}
// 自定义的验证方式
/**
* 验证器,输入的值在0-99999999之间
*/
private numberValidator = (control: FormControl): { [s: string]: boolean } => {
  if (control.value && control.value < 0 ||  control.value > 99999999 ) {
    return { numberErr: true, error: true };
  }  else {
    return;
  }
}
// 验证每个组件,如果有错误会显示信息
  FormMethod.updateFormStatus(this.mainForm);
  // 校验不通过,返回
  if (!this.mainForm.valid) {
    return;
  }

// 动态添加表单控件
this.mainForm.addControl(`productNum${index}`, this.fb.control(null, [Validators.required, this.numberValidator]));
// 动态移除表单控件
this.mainForm.removeControl(`productName${this.orderProductList.length }`);
// 验证所有组件
// 表单部分的通用方法
export const FormMethod = {
  /**
   * 更新表单状态
   * @param form FormGroup
   */
  updateFormStatus: (form: FormGroup): void => {
    for (const i of Object.keys(form.controls)) {
      form.controls[i].markAsDirty();
      form.controls[i].updateValueAndValidity();
    }
  }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值