Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度2:获取验证器限制_Javascript_Angular - Fatal编程技术网

Javascript 角度2:获取验证器限制

Javascript 角度2:获取验证器限制,javascript,angular,Javascript,Angular,例如,我有这样的表格: <form [formGroup]="form" (ngSubmit)="onSubmit()"> <input type="text" formControlName="username"> <div ngxErrors="username"> <div ngxError="required" [when]="['dirty', 'touched']"> Username is require

例如,我有这样的表格:

<form [formGroup]="form" (ngSubmit)="onSubmit()">

  <input type="text" formControlName="username">
  <div ngxErrors="username">
    <div ngxError="required" [when]="['dirty', 'touched']">
      Username is required
    </div>
  </div>

  <input type="text" formControlName="password">
  <div ngxErrors="password">
    <div ngxError="required" [when]="['dirty', 'touched']">
      Password is required
    </div>
    <div [ngxError]="['minlength', 'maxlength']" [when]="['dirty', 'touched']">
      5 characters minimum, 12 characters maximum
    </div>
  </div>

</form>
如何获取maxlength和minlength值?这样我就可以改变:

最少5个字符,最多12个字符
如下:
{form.get('username').minlength}个字符最少,{{form.get('username').maxlength}个字符最多


可能吗?

我没有解决办法。您可以从错误本身获取minlength或maxlength,但不能同时获取两者

要获取其中一个,可以使用如下语法:


最小长度应为{myError.getError('minlength')?.requiredLength}
但这并不完全是您想要的,因为在上述情况下,当minlength验证器向您提供错误时,您无法访问maxlength是什么。 起初,我认为从表单控件中查找验证器是一件简单的事情。但这显然是angular尚未支持的功能:

因此,我认为,目前唯一可能的解决方案是创建您自己的自定义验证器,该验证器将minlength和maxlength验证结合起来,并设置两者

我是这样做的。我在验证器服务中创建了一个自定义验证器,如下所示:

静态minAndMaxLengthValidator(选项):Validator fn{
返回(控件:AbstractControl):{
[键:字符串]:任何
} => {
如果(
control.value.length>options.maxLength||
control.value.length
export class AppComponent implements OnInit {

  form: FormGroup;

  constructor(
    private fb: FormBuilder
  ) {}

  ngOnInit() {
    this.form = this.fb.group({
      username: ['', [Validators.required]],
      password: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(12)]]
    });
  }

}