【发布时间】:2020-05-09 16:43:59
【问题描述】:
在我的 Angular 应用程序中,我有一个包含多个文本字段的表单,例如订单 ID 和订单日期。我的表单还有一个 FormArray,其中每个元素都是代表一行字段的 FormGroup。此表单数组在启动时有 1 个 FormGroup,可以通过单击按钮添加更多。提交表单后,我想在获得将数据发布到 REST 服务的成功响应后重置表单。我的重置代码形式如下:
resetItems(): void {
this.orderForm.reset();
this.clearErrorsFromFormGroup(this.orderForm);
let items = this.orderForm.get('items') as FormArray;
items.controls = [];
this.addItem();
this.clearErrorsFromFormGroup(items.at(0) as FormGroup);
}
private clearErrorsFromFormGroup(formGroup: FormGroup): void {
Object.keys(formGroup.controls).forEach(key => {
formGroup.controls[key].setErrors(null);
});
}
执行上述操作时,订单 ID 和订单日期等顶级字段会被重置,并且不会以红色突出显示,因为我已删除错误。我想将我的表单数组设置为与启动 1 个元素时相同的方式。我的代码清除了表单数组并添加了一个 rowData 元素。然后我清除 rowData FormGroup 的错误。在 UI 上,此 rowData 的字段都已清除,但即使我已清除错误,它们仍以红色突出显示。有人可以帮忙吗?
我在 https://stackblitz.com/edit/angular-8qjphu 上添加了一个 StackBlitz 链接来演示这一点
【问题讨论】:
-
你的 stackblitz 演示没有你上面的代码
-
对@brijmcq 感到抱歉。我现在有了。用正确的链接更新了链接。
标签: angular angular-material angular8