我试图检查表单是否有效,以防止进一步执行,如果不是.
这是我的表格:
<form (ngSubmit)="updateFirstName(firstNameForm)" #firstNameForm="ngForm" novalidate> <div class="form-group" ng-class="getCssClasses(formCtrl,formCtrl.firstName)"> <div class="input-group"> <input type="text" ngControl="firstName" #firstName="ngForm" required minlength="2" maxlength="35" pattern_="FIRST_NAME_PATTERN" [ngModel]="currentUserAccount?.firstName" (ngModelChange)="currentUserAccount ? currentUserAccount.firstName = $event : null" placeholder="{{'FIRST_NAME_FORM.NEW_FIRST_NAME'| translate }}" class="form-control"/> </div> <div [hidden]="firstName.valid"> <div *ngIf="firstName?.errors?.minlength" class="control-label">{{'FIRST_NAME_FORM.MIN_LENGTH'| translate}}</div> </div> </div> <div class="form-group"> <button type="submit" class="btn btn-primary pull-right" [disabled]="buttonDisabled">{{'FIRST_NAME_FORM.SUBMIT'| translate}}</button> <a [routerLink]="['/dashboard/useraccount']" class="btn btn-link pull-right text-right">{{'FORM_CANCEL' | translate}}</a> </div> </form>
但是,当我提交无效表单时,我在控制台中注意到NgForm的有效属性是真的……
updateFirstName(firstNameForm) { console.log(firstNameForm);//the valid attribute of firstNameForm is true... }
任何人都可以让我知道为什么会这样吗?
你正在做模板驱动的表格.请参考这个简单的
plunk
原文链接:/angularjs/141705.html<h1>Employee Form</h1> <form #personForm="ngForm" (submit)="personFormSubmit(personForm)" novalidate> <div> <div> <input id="nameInput" type="text" name="name" ngControl="name" required minlength="2" maxlength="35" [(ngModel)]="person.name" /> </div> </div> <div> <button type="submit">Submit</button> </div> <div style="color: red">{{validationMessage}}</div> </form>
然后是控制器:
import { Component } from '@angular/core'; import { FORM_DIRECTIVES,ControlGroup,Control,Validators,FormBuilder,Validator,} from '@angular/common'; import 'rxjs/Rx'; export class Person { id: number; name: string; } @Component({ selector: 'my-app',directives: [FORM_DIRECTIVES],templateUrl: 'app/app.component.html' }) export class AppComponent { person: Person; validationMessage: string; constructor() { this.person = new Person(); this.validationMessage = ""; } personFormSubmit(personForm: ControlGroup) { if (personForm.valid) { this.validationMessage = "Form Is Valid"; } else { this.validationMessage = "Form Is Not Valid"; } } }
如果您想转向更复杂的动态验证,那么转换为模型驱动的表单会更好.与此plunk一样