2017-05-16 94 views
0

我想用Angular Form Validation驗證學生對象的數據,但是當我想使用或打印例如一個學生的serialNumber時,它給了我這個錯誤:Can not讀取未定義的屬性'serialNumber'。 下面是代碼:Angular Form Validation error:form is undefined

<div *ngIf="student"> 
 
    <div class=container> 
 
    <h2>Student {{student.name}} details</h2> 
 
    <form name="studentForm" (ngSubmit)="save()"> 
 
     <!--<div ng-class="{ 'has-error' : studentForm.serialNumber.$invalid && !studentForm.serialNumber.t">--> 
 

 
     <label>Serial number: {{student.serialNumber}} </label> 
 
     <input type="text" name="serialNumber" class="form-control" ng-model="student.serialNumber" required> 
 

 
     <div ng-messages="studentForm.serialNumber.$error"> 
 
      {{studentForm.serialNumber}} 
 
      <p ng-message="required">Your name is required!</p> 
 
     </div> 
 
     <!--</div>--> 
 
     <div> 
 
     <label>Name: {{student.name}}</label> 
 
     <input ng-model="student.name" placeholder="name"> 
 
     </div> 
 
     <div> 
 
     <label>Group number: {{student.groupNumber}}</label> 
 
     <input ng-model="student.groupNumber" placeholder="groupNumber"> 
 
     </div> 
 

 
     <button (click)="goBack()">Back</button> 
 
     <button (click)="save()">Save</button> 
 
    </form> 
 
    </div> 
 
</div>

+0

這是無效的代碼 - 這是你的問題。查看ReactiveForms並使用FormBuilder在您的TS邏輯中定義您的'studentForm' –

+0

檢查[** this **](http://stackoverflow.com/q/42157675/4911842)。它可能對你有用。 – developer033

回答

0

ng-messagesng-model屬性指令不會在角2+存在。我建議讀入Angular Forms,ReactiveFormsTemplate Syntax

如果您想要雙重數據綁定輸入值,可以使用以下語法:[(ngModel)]="student.serialNumber"。但是,在Angular 2+中,除了明確的數據綁定以外,通常有更好的方法來獲取值。