繁体   English   中英

角度材料日期选择器返回 Moment 对象而不是 Date

[英]Angular material date picker return Moment object instead of Date

我有一个奇怪的问题,在我的html中我定义了-

    <mat-radio-button value="embargoed">
        <div>Everyone, limited by date</div>
        <mat-form-field *ngIf="data.selected === 'embargoed'">
            <mat-label>Available from date</mat-label>
            <input matInput [matDatepicker]="picker" #input [(ngModel)]="date">
            <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
            <mat-datepicker #picker></mat-datepicker>
        </mat-form-field>
    </mat-radio-button>

在我的comonent我初始化-

date = new Date();

我有一个 OnSubmit 函数——

onSubmit(){
    if (this.data.selected === 'embargoed') {
        this.data.date = this.date;
    }
}

在 debud 我可以看到 this.date 是 Moment 对象而不是 Date 对象,知道为什么吗?

我找到了原因。 在我的app.module.ts ,我声明:

 {provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS}

来自https://material.angular.io/components/datepicker/overview

datepicker 期望的值类型取决于应用程序中提供的 DateAdapter 的类型。 例如,NativeDateAdapter 直接与普通的 JavaScript Date 对象一起工作。 但是,当使用 MomentDateAdapter 时,这些值都将是 Moment.js 实例。

另外: https://material.angular.io/components/datepicker/overview#choosing-a-date-implementation-and-date-format-settings

日期选择器被构建为与日期实现无关。 这意味着它可以与各种不同的日期实现一起工作。 然而,这也意味着开发人员需要确保为日期选择器提供适当的部分,以便与他们选择的实现一起工作。

this.date = new Date(this.date);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM