Angular & Typescript - 'Input' 字段中的日期输入验证

Angular & Typescript - Date input validation in the 'Input' field

我的 Angular5 程序包括一个用于输入日期的 input 字段。我正在使用来自 ng-bootstrapNgbDateStructNgbCalendar。虽然有一个日历,但为了选择日期,当用户手动输入日期字段时,它不会生效。

也就是说,在为输入日期分配的输入字段中,用户不应该能够输入文本或垃圾数据。但是现在,用户可以输入任何类型的数据。

为了进行此客户端验证,我尝试使用 <input type = "date">,但 input type = date 在 IE 11 和更早版本中不受支持。

JQuery 和 JavaScript 中提供了多种解决方案。但是我不能在我的 Angular+TypeScript 程序中使用 JQuery 和 JavaScript。

验证 日期 的输入字段的方法是什么,这样用户将无法在输入字段中输入除 [=41] 中的有效日期以外的任何内容=]打字稿?

我在 TypeScript 中尝试了以下解决方法,但最终出现错误:

app.component.ts:

validateDate() {
     const regExp = /^(\d{4})\/(\d\d?)\/(\d\d?)$/;
    if (((this.fromDate).toString()).match(regExp)) {
        console.log('Valid Date');
    }
}

我得到的错误是:

[ts] - Property 'match' does not exist on type 'NgbDateStruct'

其中 this.fromDate 是我从视图中收到的日期输入。

HTML:

<div class = "input-group date">
    <input class = "form-control" [(ngModel)] = "fromDate" ngbDatepicker #d = "ngbDatepicker" onmousedown = "validateDate()">
</div>

Steffi,你的变量 fromDate 是一个对象 {year:##,month:##,day:##},

要检查日期是否有效,您只需询问年月日即可。

例如在提交中你可以做

submit()
{
    let validDate:boolean=this.fromDate.year && this.fromDate.month && this.fromDate.day
    let data={
       fecha:validDate?''+this.fromDate.year+'/'+this.fromDate.month+'/'+this.fromDate.day:null;
    }
 }