在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;
};
};
在这种情况下,它是一个正则表达式。但我也用简单的字符串比较尝试了相同的错误结果。
这是我要验证的字段之一:
<div *ngIf="Parameter.Type=='xyz'">
<input class="form-control" [id]="FieldId" type="text" formControlName="{{FieldId}}" />
</div>
这就是我设置验证器的方法:
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]?$")])));
}
只有初始值(此处为this.myValue)在启动时无效时才会出现错误。如果它有效并且我通过更改输入字段值使值无效,则验证器工作正常......