Angular 2 build --prod失败" Property' controls'类型' AbstractControl'"

时间:2017-10-07 17:15:17

标签: angular typescript2.0

在下面的代码this.fb中是FormBuilder个实例

return this.fb.group({
  name: ['', [<any>Validators.required]],
  phone: ['', [<any>Validators.required]],
  email: ['', [<any>Validators.required, Validators.email]],
  website: ['', [<any>Validators.pattern(web_pattern)]]
  tax_code: ['', [<any>Validators.required,Validators.maxLength(50)]],

  owner: this.fb.group({
    first_name: ['', [<any>Validators.required, Validators.maxLength(30)]],
    last_name: ['', [<any>Validators.required, Validators.maxLength(30)]],
    phone: ['', [<any>Validators.required]],
    email: ['', [<any>Validators.required, Validators.email]],
    password: ['', [<any>Validators.required]],
  })

});

使用ng build --prod构建此代码时,它无法说明:属性&#39;控件&#39;类型&#39; AbstractControl&#39; 上不存在。 它存在owner密钥问题,这是FormGroup实例,而不是FormControl。但是根据角度文档,有效的是在FormGroup中添加FormGroup

此代码在没有--prod的情况下构建完美。 我知道--prod会导致严格的类型检查。我无法理解如何纠正这一点。

1 个答案:

答案 0 :(得分:1)

在Form Control中的某些地方你必须使用像这样的东西

form.get('qualifications').controls 

form.controls.qualifications.controls.degree或  form.controls.qualifications['controls'].degree这不是aot友好的。

你需要将它放在组件内而不是模板这样的东西。

<强>模板

 <div class="col-md-12" *ngFor = "let address of getAddresses(user) ; let i = index">

<强>组件

  getAddresses(form){
    return form.get('addresses').controls;
  }

working一个相同的例子和code