【发布时间】:2021-01-09 18:34:43
【问题描述】:
我有一个表单组来管理一天中的时间,如下所示:
time: new FormGroup({
date: new FormControl(new Date()),
startTime: new FormControl(null),
startTimeMeridian: new FormControl(MERIDIAN.PM),
stopTime: new FormControl(null),
stopTimeMeridian: new FormControl(MERIDIAN.PM)
}, [MyCustomValidators.futureDateTime()]),
在我的futureDateTime() group 验证器中,我执行了一些逻辑来验证 formGroup,如果它无效,我执行以下操作:
control.get('startTime').setErrors(MY_CUSTOM_ERROR) // MY_CUSTOM_ERROR is a valid error object
或除control.get('stopTime') 外相同。这第一次起作用,并在 FormControls 首次进入无效状态时适当地设置错误。但是第二次,它们有空的错误对象。
我设置了调试点以缩小发生的范围,并且我的 FormGroup 验证器再次在控件上适当地设置错误,但看起来 Angular 代码中的某些内容正在清除错误对象。
如何通过 FormGroup 验证器在控件上设置错误对象?
编辑:
我不确定是什么消除了我的错误,但我能够将错误对象结构更改为错误数组,然后将它们设置在 FormGroup 上。
我现在将它们设置在 FormGroup 上,而不是 formControls startTime 或 stopTime 有错误,我的 UI 将检查 FormGroup 错误中的任何相关反馈。
【问题讨论】:
-
您是否通过自定义验证器设置错误?
-
Stackblitz 示例演示该问题:stackblitz.com/edit/…
-
你找到解决办法了吗?
标签: angular angular-reactive-forms angular-forms reactive-forms formgroups