Javascript 角度2验证器“&引用;

Javascript 角度2验证器“&引用;,javascript,validation,angular,typescript,Javascript,Validation,Angular,Typescript,在angular2中,我创建了一个自定义验证器,用于对正则表达式中的值进行验证。 我知道有一个内置的,但我面临着错误,我想知道出了什么问题 我得到了这个错误: 表达式在选中后已更改。上一个值:“true”。 当前值:“false” 这是我的验证器: import { FormControl,Validator,AbstractControl,ValidatorFn } from '@angular/forms'; export const PatternValidator = (regex:a

在angular2中,我创建了一个自定义验证器,用于对正则表达式中的值进行验证。 我知道有一个内置的,但我面临着错误,我想知道出了什么问题

我得到了这个错误:

表达式在选中后已更改。上一个值:“true”。 当前值:“false”

这是我的验证器:

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

export const PatternValidator = (regex:any):ValidatorFn  => {

  return (control:AbstractControl):{[key: string]: any} => {

    var patt = new RegExp(regex);
    if(!patt.test(control.value)){
      return {
        valid: {valid:false}
      };
    }
    return null;
  };
};
ngOnInit(){
         this.InitField(); //need to set id in oninit
         this.ValidationForm.addControl(this.FieldId,new FormControl(this.myValue,Validators.compose([Validators.required,CustomValidators.PatternValidator("^[a-zA-Z]?$")])));
    }
在这种情况下,它是一个正则表达式。但我也尝试了简单的字符串比较,结果相同

这是我要验证的字段之一:

 <div *ngIf="Parameter.Type=='xyz'">
        <input class="form-control" [id]="FieldId" type="text" formControlName="{{FieldId}}" />
    </div>

只有在启动时初始值(此处为this.myValue)无效时才会发生错误。如果它是有效的,并且我通过更改输入字段值使该值无效,那么验证器工作正常…

在哪里设置模式
PatternValidator
是一个出厂功能,应该进行配置,例如
CustomValidators.PatternValidator('a-z')
。很抱歉。我只是添加了一些示例代码,但忘了正确调用验证器。我刚刚编辑了我的第一篇文章。你在哪里设置模式
PatternValidator
是一个出厂功能,应该进行配置,例如
CustomValidators.PatternValidator('a-z')
。很抱歉。我只是添加了一些示例代码,但忘了正确调用验证器。我刚刚编辑了我的第一篇文章。