2017-09-07 60 views
0

这是我formGroup上AOT编译错误在角2访问formArray

this.createOrderForm = this.fb.group({ 
     items: this.fb.array([]) 
    }); 

有关按钮,点击添加项目

addItem() { 
    const control = <FormArray>this.createOrderForm.controls['items']; 
    const addrCtrl = this.initItem(); 
    control.push(addrCtrl); 
    } 

项目FormGroup是

initItem() { 
    return this.fb.group({ 
     est_delivery_date: [''], 
     est_delivery_time: [''], 
     parentServices: ['', Validators.required], 
     services: [''], 
     brands: ['', Validators.required], 
     sizes: ['',Validators.required], 
     products: ['', Validators.required], 
     discounts: [''], 
     is_express_delivery: [''], 
     is_packing: [''], 
     confirmed: [''], 
     coupon: [''] 
    }); 
    } 

在我的HTML

<div class="panel panel-default margin-20"> 
      <h4 class="form-group col-xs-12">Items</h4> 
      <div formArrayName="items"> 
      <div *ngFor="let item of createOrderForm.get('items').controls; let i=index" class="panel panel-default"> 
       <div class="panel-heading col-xs-12"> 
       <h5>Item {{i + 1}}</h5> 
       <span class="ion-close pull-right" *ngIf="createOrderForm.get('items').controls.length > 1" (click)="removeItem(i)"></span> 
       </div> 
       <div class="panel-body" [formGroupName]="i"> 
       <createitem [pickup]="pickup_date" [group]="createOrderForm.get('items').controls[i]"></createitem> 
       </div> 
      </div> 
      </div> 
     </div> 

我正在上AOT编译

以下错误住宅“控制”不上键入“AbstractControl”存在。

请帮我弄清楚为什么我得到这个错误,因为它在jit编译器中完美地工作。

+0

它可能会帮助你* ngFor =“let item of createOrderForm.controls.items.controls;让我=索引“或看看Plnkr http://plnkr.co/edit/hQ6RtzCfPosfQl4HlbZQ?p=preview –

+0

感谢您的帮助,但它不会汇编在一个。 –

+0

你检查了Plnkr吗? –

回答

1

该模板中的这行代码是Aot编译问题的原因。

createOrderForm.get('items').controls 

你需要做的而不是

let item of createOrderForm.get('items').controls 

这有这样的事情

let item of getItem(createOrderForm) 

组件使用以下

getItem(form){ 
    return form.get('items').controls 
    } 
+0

的aot let地址谢谢你这么多先生它的工作 –

+0

@shubhampaliwal没有先生,拉胡尔是好的,欢迎:) –

+0

不知道这是一个正确的做法,但它的工作..看起来像愚弄aot编译器 –