angular - 在反应式表单中创建表单控制组
问题描述
尝试为反应式表单创建 html,但我总是出错
这是我的表格
private buildForm(): void {
this.formOperational = this.formBuilder.group({
comment: [this.expertOperational.comment],
workingDays: new FormArray([])
});
}
private createWorkignDays(): void {
this.operational.workingDay.forEach((day: WorkingDay) => {
this.workHoursControls.push(
this.formBuilder.group({
weekDay: [day],
operationalAM: this.formBuilder.group({
fixed: [day.operationalAM.fixed],
startTime: [day.operationalAM.startTime],
endTime: [day.operationalAM.endTime]
}),
operationalPM: this.formBuilder.group({
fixed: [day.operationalAM.fixed],
startTime: [day.operationalAM.startTime],
endTime: [day.operationalAM.endTime]
})
})
);
});
}
当我使用 HTML 时,我尝试这样的事情
<form [formGroup]="formOperational">
<div class="row pb-1" *ngFor="let day of formOperational.get('workingDays').controls; let i = index;">
<div class="col-lg-2 col-sm-2 col-md-2 justify-content-center align-self-center">
{{'Shared.WeekDay.' + day.weekDay | translate }}
</div>
<div class="row" [formGroup]="i">
<div class="text-center col">
<input type="checkbox" formControlName="fixed">
</div>
</div>
<div class="col">
<input class="form-control text-center width-70" formControlName="startTime" />
</div>
<div class="col">
<input class="form-control text-center width-70" formControlName="endTime" />
</div>
</div>
<div class="form-group">
<textarea class="form-control rounded-0" formControlName="comment"
rows="11">{{expertOperational.comment}}</textarea>
</div>
</form>
我有错误
ERROR Error: formGroup expects a FormGroup instance. Please pass one in.
Example:
<div [formGroup]="myGroup">
<input formControlName="firstName">
</div>
In your class:
this.myGroup = new FormGroup({
firstName: new FormControl()
});
at Function.push../node_modules/@angular/forms/fesm5/forms.js.ReactiveErrors.missingFormException (forms.js:1443)
at FormGroupDirective.push../node_modules/@angular/forms/fesm5/forms.js.FormGroupDirective._checkFormPresent (forms.js:5414)
at FormGroupDirective.push../node_modules/@angular/forms/fesm5/forms.js.FormGroupDirective.ngOnChanges (forms.js:5237)
at checkAndUpdateDirectiveInline (core.js:22095)
at checkAndUpdateNodeInline (core.js:23363)
at checkAndUpdateNode (core.js:23325)
at debugCheckAndUpdateNode (core.js:23959)
at debugCheckDirectivesFn (core.js:23919)
at Object.eval [as updateDirectives] (ExpertOperationalComponent.html:6)
at Object.debugUpdateDirectives [as updateDirectives] (core.js:23911)
有人知道我在哪里做错了吗?谢谢
解决方案
你说你的 HTML 不好。你在那里遇到错误吗?试试这个
删除
*ngFor="let day of formOperational.get('workingDays').controls; let i = index;"
添加
设置吸气剂
get controls() {
return (this.formOperational.get('workingDays') as FormArray).controls;
}
然后在模板中
*ngFor="let day of controls; let i = index"
推荐阅读
- mongodb - 在 mongoDB 中查找未出现在其他文档中的电子邮件
- swift - 在空 NSSet 上迁移关系到一对多结果
- julia - Julia 中有某种空 IOStream 吗?
- java - EnumSet.copyOf 空集合抛出 IllegalArgumentException
- c# - 将一个 ViewModel 移动到另一个 ViewModel 时如何调用服务
- firebase - 用nodejs sdk编写的Firebase函数可以通过firestore规则吗?
- python-3.x - 如何捕捉 Google Video Intelligence DeadlineExceeded 异常?
- java - 如何将 java.util.random 转换为 int
- keras - Keras 中输入数据的规范化
- javascript - 回调中的匿名函数是否使用 iife 调用?