[英]How to reserve space for form validation messages in Angular?
这个问题有一个基于 Angular 文档的 Stackblitz, Validating input in reactive forms 。 给定一个带有验证的简单 Angular 表单:
显示错误消息时如何阻止表单跳来跳去?
例如,在输入无效的 email 地址后,密码字段将被向下推以显示错误消息。 与密码验证失败时按下登录按钮的方式相同。
我以前使用过 Angular Material Form Fields ,它有自己的方式为验证消息保留空间。
我知道我需要为错误消息保留一些空间,但是应该如何实现呢? 到目前为止我拒绝的两个想法:
用于有条件地显示错误消息的 HTML 代码是
<form [formGroup]="form" fxLayout="column" fxLayoutGap="24px">
<!-- Email -->
<div>
<label for="email">Email</label>
<input id="email" formControlName="email">
<!-- Errors -->
<div *ngIf="email.invalid && email.dirty" class="warn">
<div *ngIf="email.errors.required">Email is required</div>
<div *ngIf="email.errors.email">Must be a valid email address</div>
</div>
</div>
<!-- Password -->
<div>
<label for="password">Password</label>
<input id="password" type="password" formControlName="password">
<!-- Errors -->
<div *ngIf="password.invalid && password.dirty" class="warn">
<div *ngIf="password.errors.required">Password is required</div>
</div>
</div>
<!-- Button -->
<button class="submit">Login</button>
</form>
解决此问题的一种方法是使包含错误的div
具有高度,以便它始终在屏幕上,并且其中的错误消息有条件地出现。
<div class="warn">
<ng-container *ngIf="email.invalid && email.dirty">
<div *ngIf="email.errors.required">Email is required</div>
<div *ngIf="email.errors.email">Must be a valid email address</div>
</ng-container>
</div>
.warn {
color: #FF3636;
font-size: 14px;
text-align: right;
height: 16px;
}
现在warn
div 在页面上,占用 16px 并等待包含一条消息,如果验证失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.