编辑(2017 年 5 月 4 日):
经过大量研究,我很清楚,目前以“本地”方式不可能做到这一点。见这里:https ://github.com/angular/angular/issues/7113
原帖:
目前,以下代码允许我在用户单击提交按钮而不在输入字段中输入有效电子邮件时显示验证错误:
import {
Component
} from '@angular/core';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent {
submitted = false;
public submitForm(form: any): void {
this.submitted = true;
console.log(form);
}
}
.invalid-message {
color: yellow;
}
<form id="loginForm" #loginForm="ngForm" (ngSubmit)="submitForm(loginForm.value)">
<div class="form-group">
<input type="email" class="form-control form-control-lg" #email="ngModel" name="email" ngModel required pattern="^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$" placeholder="email">
<ng-container *ngIf="this.submitted && email.errors">
<small [hidden]="!email.errors.required" class="invalid-message float-right">EMAIL REQUIRED</small>
<small [hidden]="!email.errors.pattern" class="invalid-message float-right">INCORRECT EMAIL FORMAT</small>
</ng-container>
</div>
<button type="submit" form="loginForm" class="btn btn-secondary btn-block btn-lg">LOGIN</button>
</form>
我想要的是当用户再次开始在输入中输入任何内容时验证错误消息会自动消失。例如,这是 Airbnb 的行为,如果您尝试登录网络,您可能会遇到这种行为。