尝试禁用datepicker中的过去日期时,为什么会收到验证错误?

时间:2019-04-01 14:59:33

标签: angular datepicker ng-bootstrap

我有一个reactive form,它使用ng-bootstrap's datepicker作为可选日期字段,并且我试图通过将minDate设置为当前日期来禁用过去的日期。

<div class="input-group">
  <input class="form-control" [minDate]="ngdate" placeholder="yyyy-mm-dd" name="dp" formControlName="startDate" ngbDatepicker #d="ngbDatepicker">
  <div class="input-group-append">
    <button class="btn btn-outline-secondary calendar fa fa-calendar" (click)="d.toggle()" type="button"></button>
  </div>
</div>
ngdate: NgbDateStruct = {
    year: new Date().getFullYear(),
    month: new Date().getMonth() + 1,
    day: new Date().getDate()
};

this.registerForm = this.formBuilder.group({
    startDate: ['']
});

当我输入一个日期时,它可以正确执行,并且今天之前的所有日期都被正确禁用。问题是,当我提交表单而不输入日期时,它的状态为errors.ngbdate是无效的。

我认为这是因为我的日期字段开始为空白(因为它是反应形式)并且没有初始化。

如何在用户未输入日期的情况下禁用过去的日期,同时防止发生此验证错误?

1 个答案:

答案 0 :(得分:0)

根据Mr. Jay's comment,可以通过将startDate: ['']更改为startDate: null来解决。