Nic*_*k B 1 error-handling templates angular angular-forms
如果表单中的错误计数大于1,我想有条件地应用css类.如何在angular4中执行此操作?
零件:
import { Component } from "@angular/core";
import { FormGroup, ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';
@Component({
...
})
export class RegisterComponent {
complexForm : FormGroup;
constructor(fb: FormBuilder){
this.complexForm = fb.group({
'emailAddress' : [null, Validators.email],
'firstName': [null, Validators.compose([Validators.required, Validators.minLength(2)])],
...
})
}
submitForm(value: any){
console.log(value);
}
}
Run Code Online (Sandbox Code Playgroud)
模板:
<form [formGroup]="complexForm" (ngSubmit)="submitForm(complexForm.value)">
<section class="form-block">
<div class="form-group" [ngClass]="{'has-error':!complexForm.controls['emailAddress'].valid && complexForm.controls['emailAddress'].touched}">
<label for="formFields_1">Email Address</label>
<input [formControl]="complexForm.controls['emailAddress']" type="text" spellcheck="false" id="formFields_1" placeholder="" size="35">
<span *ngIf="complexForm.controls['emailAddress'].hasError('email') && complexForm.controls['emailAddress'].touched" class="tooltip-content">
Please enter a valid email address (ex. joan@vmware.com)
</span>
</div>
<div class="form-group" [ngClass]="{'has-error':!complexForm.controls['firstName'].valid && complexForm.controls['firstName'].touched}">
<label for="formFields_2">First Name</label>
<input [formControl]="complexForm.controls['firstName']" type="text" spellcheck="false" id="formFields_2" placeholder="" size="35">
<span *ngIf="complexForm.controls['firstName'].hasError('required') && complexForm.controls['firstName'].touched" class="tooltip-content">
Your first name must contain at least one letter
</span>
</div>
</section>
</form>
Run Code Online (Sandbox Code Playgroud)
如果我想将类form-error应用于<form>表单错误计数大于1,我该怎么做?谢谢你的想法.
我不知道Angular给你的方式.您必须在组件类中编写自己的方法来计算它.您需要将每个控件中的错误计数加起来.
像这样的东西:
getErrorCount(container: FormGroup): number {
let errorCount = 0;
for (let controlKey in container.controls) {
if (container.controls.hasOwnProperty(controlKey)) {
if (container.controls[controlKey].errors) {
errorCount += Object.keys(container.controls[controlKey].errors).length;
console.log(errorCount);
}
}
}
return errorCount;
}
Run Code Online (Sandbox Code Playgroud)