Angular 4 表单验证器 - minLength 和 maxLength 不适用于字段类型编号

标签 angular typescript forms validation angular4-forms

我正在尝试开发一个联系表单,我希望用户输入长度在 10-12 之间的电话号码值。

值得注意的是,同样的验证在 Message 字段上进行,它唯一的 number 字段给我带来了麻烦。

I found this answer but it is of no use for me.

我有如下代码:

HTML:

<form [formGroup]="myForm" (ngSubmit)="myFormSubmit()">
      <input type="number" formControlName="phone" placeholder="Phone Number">
      <input type="text" formControlName="message" placeholder="Message">
       <button class="button" type="submit" [disabled]="!myForm.valid">Submit</button>
</form>

TS:

this.myForm = this.formBuilder.group({
     phone: ['',  [Validators.required, Validators.minLength(10), Validators.maxLength(12)]],
     message: ['',  [Validators.required, Validators.minLength(10), Validators.maxLength(100)]]
});`

最佳答案

像下面一样使用它并且完美地工作:

phone: ['',  [Validators.required, Validators.min(10000000000), Validators.max(999999999999)]],

自定义验证服务:

import { AbstractControl, ValidatorFn } from '@angular/forms';

export class customValidationService {
   static checkLimit(min: number, max: number): ValidatorFn {
    return (c: AbstractControl): { [key: string]: boolean } | null => {
        if (c.value && (isNaN(c.value) || c.value < min || c.value > max)) {
            return { 'range': true };
        }
        return null;
    };
  }
}

关于Angular 4 表单验证器 - minLength 和 maxLength 不适用于字段类型编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46129719/

相关文章:

javascript - 将 RxJS 与 filter(Boolean) 一起用于查询?

angular - NativeScript-Angular -> app.component.ts 中的 ActionBar 路由变化时不一致

html - angular-cli:依赖于环境的 CSS

javascript - console.log 未在 ('submit' 中执行)如果 event.preventDefault() 未完成

javascript - 如何将名称属性添加到动态生成的 <tr>

java - Play Framework 中的发布请求中的表单值为null

angular - 如何在 Angular 2 RC4 中获取查询参数

node.js - 火力基地。错误 "Request contains an invalid argument."

typescript - 我可以指定一个接口(interface)将共享另一个接口(interface)的 key 吗?

Angular Reactive Forms 从类型生成表单控件