我在Angular2项目的Reactive表单中使用了ng-bootstrap的ngbDatepicker,日期是可选的,但是除非选择了日期,否则ngbDatepicker总是将表单标记为Invalid。
有没有办法从表单验证中排除ngbDatepicker,或者配置它以便它返回Valid是否设置了值?
答案 0 :(得分:1)
问题在于我如何初始化表单值。我将默认值设置为空字符串,我应该将日期初始化为null。所以我这样做:
replicantForm = this.fb.group({
name: ['', Validators.required],
incepdate: '',
longevity: ''
})
当我应该这样做时:
replicantForm = this.fb.group({
name: ['', Validators.required],
incepdate: null,
longevity: ''
})
非常感谢@ pkozlowski-opensource的澄清。
答案 1 :(得分:1)
为了回应已接受的答案以及它不适用于后续更新的事实,我使用了以下黑客来确保控件在没有插入或无效日期时有效。
如果你问我,在改变验证器中的值时非常讨厌,但是在ngb-datepicker内部设置值之前完成工作。
所需控件上的自定义验证器:
{{1}}