1
我在角度2项目中使用Reactive窗体模式。我想用答案动态地填充容器(答案对象是使用http调用获取并填充的)。angular 2 NgFor只支持绑定到Iterables,如数组
活性形式的对象结构:
public questionDetailForm = this.fb.group({
type : ['', Validators.required],
title : ['', Validators.required],
required: [false],
answers : this.fb.array([])
});
辅助数组填充的答案' 'questionDetailForm' 对象的键:
public formArray = <FormArray>this.questionDetailForm.controls['answers'];
'formArray' 由HTTP调用响应数据填充:
if (response.data.question.answers != null && response.data.question.type_id !== 400 && response.data.question.type_id !== 800) {
for (const key in response.data.question.answers) {
if (response.data.question.answers.hasOwnProperty(key)) {
this.formArray.push(new FormControl(response.data.question.answers[key] , Validators.required));
}
}
}
问题出现在html文件中(以粗体突出显示):
<div fxLayout="row" fxFlexOffset="10" *ngFor="let answer of **questionDetailForm.controls['answers'];** let i = index" class="base-input-container answer-container">
<md-input-container fxFlex="70" [ngClass]="{haserror: formErrors.answer && i === answerIndexError}">
<input mdInput type="text" [formControl]="answer" placeholder="Answer">
</md-input-container>
<button type="button" fxFlexOffset="3" class="remove-answer" md-fab mdTooltip="remove answer" (click)="removeAnswer(i)" color="primary"><i class="material-icons">remove</i></button>
</div>
我刚刚从angular-cli beta版本更新到1.0.0。我还没有使用测试版面临同样的问题。
非常感谢......还担任questionDetailForm.controls.answers.controls – tsiro
当我建项目生产我得到'属性'控件'不存在类型'AbstractControl'' – tsiro
使用.get(),应该工作。 – unitario