我正在使用isPassVaid检查有效密码,我注意到表单在构造时(formInit)调用了isPassValid,为什么?
ngOnInit() {
this.formInit();
}
formInit() {
this.form = this.fb.group({
password: ['', [Validators.required, this.isPassVaid]]
});
}
isPassValid(control: FormControl) {
if (control.value) {
const regex = '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^\\da-zA-Z]).{6,10}$';
const regexp = new RegExp(regex, 'g');
if (regexp.test(control.value)) {
return;
} else {
return { invalidPass: true };
}
}
}
答案 0 :(得分:0)
在根据生命周期构建组件之后在ngoninit中初始化该窗体时,它将调用isPassValid并显示无效的bcz并将其作为初始化值
所以请像下面那样使用
formInit() {
this.form = this.fb.group({
password: ['', Validators.compose([ Validators.required, Validators.pattern(' ^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^\\da-zA-Z]).{6,10}$')])]
});
}