angular - Angular:表单验证 - 匹配的密码不起作用
问题描述
我只是在创建带有一些基本验证的注册表单
我的代码:
注册.html
<form #registrationForm="ngForm" (ngSubmit)="onFormSubmit()">
...
<div class="form-group">
<label for="reg_password">Pawword</label>
<input required type="password" class="form-control" id="reg_password" name="reg_password" [(ngModel)]="register_inputs.password"
#passwordControl="ngModel">
<ng-container *ngIf="passwordControl.invalid && passwordControl.touched">
<p class="error-message" *ngIf="passwordControl.errors?.required">
Password is required!
</p>
</ng-container>
</div>
<div class="form-group">
<label for="reg_r_password">Retype Password</label>
<input required type="password" class="form-control" id="reg_r_password" name="reg_r_password" [(ngModel)]="register_inputs.r_password"
#rPasswordControl="ngModel">
<ng-container *ngIf="rPasswordControl.invalid && rPasswordControl.touched">
<p class="error-message" *ngIf="rPasswordControl.errors?.required">
Password confirmation is required!
</p>
<p class="error-message" *ngIf="(passwordControl.value != rPasswordControl.value) && !rPasswordControl.errors?.required">
Password does not match the confirm password.
</p>
</ng-container>
</div>
...
<div class="row">
<div class="col-md-12 text-center align-self-center">
<button [disabled]="registrationForm.invalid" type="submit" class="btn btn-danger">Submit</button>
</div>
</div>
</form>
除匹配的密码验证外,所有验证均正常工作。
我做错什么了吗?
任何建议表示赞赏。
解决方案
您可以删除第二个验证条件。
<p class="error-message" *ngIf="(passwordControl.value != rPasswordControl.value) && !rPasswordControl.errors?.required">
Password does not match the confirm password.
</p>
将其更改为
<p class="error-message" *ngIf="passwordControl.value != rPasswordControl.value">
Password does not match the confirm password.
</p>
在提交按钮上,您应该添加一个条件,因为匹配密码不是核心验证。IE;
<div class="col-md-12 text-center align-self-center">
<button [disabled]="passwordControl.value == rPasswordControl.value && registrationForm.invalid" type="submit" class="btn btn-danger">Submit</button>
</div>
推荐阅读
- javascript - 如何创建点击计数器?
- python - 为什么我的多处理可能会暂停一段时间?
- c++ - 我无法让 GLEW 在 ubuntu 20.04 (C++) 中处理 netbeans
- python - 如何创建值在不同时间变化的元组生成器
- python - 如何在同一行上打印 if 语句
- visual-studio - 字符串太大,无法使用 UTF-8 进行编码,而是在 Visual Studio 2019 for Xamarin.android 项目中写为“STRING_TOO_LARGE”
- regex - Powershell Regex:如果它包含一个既不在开头也不在结尾的句点,则匹配整个字符串
- php - PHP警告Wordpress中的非法字符串'privacy_policy'
- javascript - 如何根据两个属性获取数组中重复项的总和并返回两个数组?
- python - 即使安装了模块 cv2 也找不到