2017-04-13 120 views
0

我是Angular的新手,我将此练习作为基础:forms。该示例告诉我们使用#name属性并将其分配给“名称”。但是,该属性已用于检索提交表单时的数据(如上一条规则所示)。尝试定义我自己的名称时收到错误:Angular:表单验证导致错误

Cannot read property 'name' of undefined 

我对此有点困惑。

<form method="post"> 
    <div class="form-group"> 
     <label for="inputName">Name</label> 
     <input #name type="text" class="form-control" id="inputName" placeholder="Name" required minlength="2" maxlength="20" 
     name="companyName" [(ngModel)]="company.name" #companyName="ngModel"> 

     <div *ngIf="companyName.errors && (companyName.dirty || companyName.touched)" class="alert alert-danger"> 
      <div [hidden]="!companyName.errors.required">Name is required</div> 
      <div [hidden]="!companyName.errors.minlength"> Name must be at least 2 characters long.</div> 
      <div [hidden]="!companyName.errors.maxlength">Name cannot be more than 20 characters long.</div> 
     </div> 
    </div> 
    <button type="submit" class="btn btn-default" (click)="add(name.value, street.value, number.value, zipCode.value, city.value, iban.value, telephone.value)">Submit</button> 
</form> 

我的公司对象:

export class Company { 
    name: string; 
    street: string; 
    number: string; 
    zipCode: string; 
    city: string; 
    iban: string; 
    telephone: string; 

    constructor(name: string, street: string, number: string, zipCode: string, city: string, iban: string, telephone: string) { 
     this.name = name; 
     this.street = street; 
     this.number = number; 
     this.zipCode = zipCode; 
     this.city = city; 
     this.iban = iban; 
     this.telephone = telephone; 
    } 
} 
+1

删除'''#name'''。您已经拥有'''#companyName'',您可以通过'''companyName.value'''使用''''。顺便说一句,是不是关于''[[(ngModel)] =“company.name”'''的错误?向我们展示'''公司''对象。 – elzoy

+0

elzoy,我已将我的公司对象添加到我的问题中。不知道为什么这些颜色没有出现。 – Helenesh

回答