我需要使用表单数组来创建动态表单。
我在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”上不存在属性“控件”。
出了什么问题?我该如何解决????
答案 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>