Pluralsight. . :
<div class="form-group"
[ngClass]="{'has-error': (emailVar.touched || emailVar.dirty) && !emailVar.valid }">
<label class="col-md-2 control-label"
for="emailId">Email</label>
<div class="col-md-8">
<input class="form-control"
id="emailId"
type="email"
placeholder="Email (required)"
required
pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+"
[(ngModel)]="customer.email"
name="email"
#emailVar="ngModel" />
<span class="help-block" *ngIf="(emailVar.touched || emailVar.dirty) && emailVar.errors">
<span *ngIf="emailVar.errors.required">
Please enter your email address.
</span>
<span *ngIf="emailVar.errors.pattern">
Please enter a valid email address.
</span>
<span *ngIf="emailVar.errors.email">
Please enter a valid email address.
</span>
</span>
</div>
</div>
.
this.customerForm = this.fb.group({
firstName: ['', [Validators.required, Validators.minLength(3)]],
lastName: ['', [Validators.required, Validators.maxLength(50)]],
email: ['', [Validators.required, Validators.pattern('[a-z0-9._%+-]+@[a-z0-9.-]+')]],
sendCatalog: true
});
, - Angular. HTML, , , .
, github.