Угловой 6 - шаблон проверки реактивной формы не работает
У меня есть реактивная форма Angular 6 и я пытаюсь подтвердить пароль с помощью шаблона регулярных выражений, и это не работает.
<div class="form-group">
<label for="password">Password</label>
<input type="password" formControlName="password" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.password.errors }"
/>
<div *ngIf="submitted && f.password.errors" class="invalid-feedback">
<div *ngIf="f.password.errors.required">Required</div>
<div *ngIf="f.password.errors.pattern">Not valid</div>
</div>
</div>
Регулярное выражение, которое я использую, выглядит следующим образом:
ngOnInit() {
this.registerForm = this.formBuilder.group({
password: ['', [Validators.required, Validators.pattern('^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$')]],
});
}
Что бы я ни вводил в пароле, я получаю сообщение об ошибке в пользовательском интерфейсе. Not valid
Есть идеи, что я делаю не так?
1 ответ
Вместо этого вам нужно удалить ('') и поместить (//) в параметр в вашем методе pattern. Так должно быть:
password: ['', [Validators.required, Validators.pattern(/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$/)]]
Вы должны поставить вторую обратную косую черту перед d и удалить '^' и '$', как в следующем примере:
'(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,}'