Javascript 角度2验证器“&引用;
在angular2中,我创建了一个自定义验证器,用于对正则表达式中的值进行验证。 我知道有一个内置的,但我面临着错误,我想知道出了什么问题 我得到了这个错误: 表达式在选中后已更改。上一个值:“true”。 当前值:“false” 这是我的验证器: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
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')
。很抱歉。我只是添加了一些示例代码,但忘了正确调用验证器。我刚刚编辑了我的第一篇文章。