2017-06-05 160 views
0
我在运行 ng build --prod有以下错误

当这是编译工作,为ng buildng server角度构建失败创建生产版本

错误在NG:{PATH} /仪表/促销/加推广/促销 - form.component.html(33,13):属性'controls'在类型'AbstractControl'上不存在。

ERROR in ng:{path}/dashboard/promotions/add-promotion/promotion-form.component.html (33,13): Property 'controls' does not exist on type 'AbstractControl'. 

ERROR in ng:{path}/dashboard/promotions/add-promotion/promotion-form.component.html (45,13): Property 'controls' does not exist on type 'AbstractControl'. 

ERROR in ng://{path}/dashboard/promotions/add-promotion/promotion-form.component.html (45,13): Property 'controls' does not exist on type 'AbstractControl'. 

下面是我的组件表单生成器和HTML

this.promotionForm = this.fb.group({ 
     'id':[null], 
     'title': [null, Validators.compose([Validators.required, Validators.maxLength(50), 
     Validators.pattern('[a-zA-Z ]*'), Validators.required,Validators.minLength(1)])], 
     'description': [null, Validators.compose([Validators.required])], 
     'imageSrc': [null, [Validators.required]], 
     'contactPerson' : this.fb.group({ 
          'name': [null, [Validators.required]], 
          'email': [null, [Validators.required,Validators.pattern(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/)]], 
          'phone': [null, [Validators.required, 
          Validators.pattern(/^[0-9]{10}$/)]] 
         }), 
    }); 

的HTML组件

<form [formGroup] ="promotionForm" (submit)="submit(promotionForm.value)"> 
    <--Top Form fields--> 
    <table class="full-width" cellspacing="0"> 
    <tr > 
     <div formGroupName="contactPerson"> 
     <td > 
      <md-input-container class="full-width"> 
      <input mdInput 
        formControlName="name" 
        placeholder="Sales Person" [ngModel]="promoData?.contactPerson.name" 
        [formControl]="promotionForm.controls['name']"> 
      <div *ngIf="!promotionForm.controls.contactPerson.controls.name.valid 
          && (promotionForm.controls.contactPerson.controls.name.dirty)"> 
       <span class="primary">Please enter a valid name.</span> 
      </div> 
      </md-input-container> 
     </td> 
     <td> 
      <md-input-container class="full-width"> 
      <input mdInput formControlName="phone" 
        placeholder="Mobile Number" [ngModel]="promoData?.contactPerson.phone" 
      [formControl]="promotionForm.controls['phone']"> 
      <div *ngIf="!promotionForm.controls.contactPerson.controls.phone.valid 
          && (promotionForm.controls.contactPerson.controls.phone.dirty)"> 
       <span class="primary">Please enter a valid phone number.</span> 
      </div> 
      </md-input-container> 
     </td> 
     <td> 
      <md-input-container class="full-width"> 
      <input mdInput formControlName="email" 
        placeholder="Email Address" [ngModel]="promoData?.contactPerson.email"> 

      <div *ngIf="!promotionForm.controls.contactPerson.controls.email.valid 
          && (promotionForm.controls.contactPerson.controls.email.dirty)"> 
       <span class="primary">Please enter a valid email.</span> 
      </div> 
      </md-input-container> 
     </td> 
     </div> 
    </tr> 
    </table> 
....</form> 
+0

这可能会有所帮助https://github.com/angular/angular-cli/issues/6099 –

+0

谢谢你的回复,我检查了这个链接,但是他们没有解释这个答案,我有点困惑与它 – 123Ex

回答

2

一般情况下,你不应该访问这样的控制,这是你应该什么做:

change

promotionForm.controls['name'] 

promotionForm.get('name') 

,改变

promotionForm.controls.contactPerson.controls.phone 

promotionForm.get('contactPerson.phone') 

发现别人并修复它们。

+0

谢谢你的回应,编译问题固定与此,但验证邮件不显示 – 123Ex

+0

这将是另一个问题,我的朋友。 – Milad

+0

一切在开发模式下正常工作,当我切换到prod提到的问题来了,现在导致另一个,你知道如何解决? – 123Ex