类型“ AbstractControl”上不存在属性“控件”。在角度8

时间:2019-10-12 06:23:41

标签: javascript angular typescript

我需要使用表单数组来创建动态表单。

我在ts文件中创建了此表单:

function mapStateToProps (state) {
  const { isLoggedIn } = state
  return { isLoggedIn}
}
const mapDispatchToProps = dispatch =>
  bindActionCreators({ logInUser }, dispatch)

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(ProfilePage)

这是使用表单数组的html中的mt代码:

  createForm(): void {
    this.addQuestionForm = this._formBuilder.group({
        title: [
        '', Validators.compose(
            [
            Validators.required,
            Validators.maxLength(this.val.maxLen.title)
            ])
        ],
        courseExamId: ['', Validators.compose([Validators.required])],
        courseOptions: this._formBuilder.array([])
    });
  }

  // Initial FormArray
  createItem(): FormGroup {
    return this._formBuilder.group({
        optionTitle: [
        '', Validators.compose(
            [
            Validators.required
            ])
        ],
        isCorrect: [
        false,
        Validators.compose(
            [
            Validators.required]
        )
        ]
    });
  }

但是当我需要使用此页面时,它会向我显示此错误:

  

类型“ AbstractControl”上不存在属性“控件”。

出了什么问题?我该如何解决????

1 个答案:

答案 0 :(得分:1)

我认为问题在于您如何形成.html,一定要像

<!--first a div with the name of the form Array-->
<div formArrayName="courseOptions">
  <!--after the loop-->
  <div class="row m-auto" 
       *ngFor="let project of addQuestionForm.get('courseOptions').controls; let i = index">
  ...
  </div>
</div>

但是我不确定,您需要为FormArray创建一个吸气剂

get courseOptions()
{
    return this.addQuestionForm? this.addQuestionForm.get('courseOptions') as Form Array:null
}

在您的.html

<div formArrayName="courseOptions">
  <div class="row m-auto" *ngFor="let project of courseOptions.controls; let i = index">
  ...
  </div>
</div>