如何标记ngbDatepicker即使没有选择值,也会在表单中有效

时间:2017-05-07 05:56:37

标签: angular ng-bootstrap ngb-datepicker

我在Angular2项目的Reactive表单中使用了ng-bootstrap的ngbDatepicker,日期是可选的,但是除非选择了日期,否则ngbDatepicker总是将表单标记为Invalid。

有没有办法从表单验证中排除ngbDatepicker,或者配置它以便它返回Valid是否设置了值?

2 个答案:

答案 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}}