当前版本的Material Angular DatePicker发生了一些非常奇怪的事情,在我将它从A5更新到A6之后,它开始在1天之前解析我的日期,示例在这里:
https://stackblitz.com/edit/angular6-datepicker-parsing-wrong-date
我正在使用原始文档示例,对我自己的语言稍有改变语言,并将自定义日期值应用于ngModel,以便它可以解析.
import {Component} from '@angular/core'; import {MAT_MOMENT_DATE_FORMATS,MomentDateAdapter} from '@angular/material-moment-adapter'; import {DateAdapter,MAT_DATE_FORMATS,MAT_DATE_LOCALE} from '@angular/material/core'; @Component({ selector: 'datepicker-locale-example',templateUrl: 'datepicker-locale-example.html',styleUrls: ['datepicker-locale-example.css'],providers: [ {provide: MAT_DATE_LOCALE,useValue: 'pt'},//my change from the original documentation example {provide: DateAdapter,useClass: MomentDateAdapter,deps: [MAT_DATE_LOCALE]},{provide: MAT_DATE_FORMATS,useValue: MAT_MOMENT_DATE_FORMATS},],}) export class DatepickerLocaleExample { constructor(private adapter: DateAdapter<any>) {} private someDate = '2018-01-31'; //my change from the original documentation example french() { this.adapter.setLocale('fr'); } }
HTML:
<mat-form-field> <input matInput [matDatepicker]="myDatePicker" placeholder="Different locale" [(ngModel)]="someDate"> <!-- my change from the original documentation example --> <mat-datepicker-toggle matSuffix [for]="myDatePicker"></mat-datepicker-toggle> <mat-datepicker #myDatePicker></mat-datepicker> <mat-hint>Actual Date: {{someDate}}</mat-hint> </mat-form-field> <button mat-button (click)="french()">Dynamically switch to french</button>
有谁知道如何解决这个问题?
解决方法
因此,经过一些研究后我发现这是一个时区问题.要临时修复它,我不得不将T00:00:00连接到我的日期结束,该日期来自后端,格式为yyyy / MM / dd.
如果可能,最好的选择是将后端格式更改为yyyy / MM / ddTHH:mm:ss.
否则,当您必须在Angular 6 Material DatePicker中使用格式yyyy / MM / dd时,有两个选项可以解决问题:te bad and good.
>坏(可能只是暂时的)就是做我做的事情,将T00:00:00连接到DatePicker解析它之前的日期结束.
>好处是实际获取日期字符串,将其转换为日期,将时区转换为GMT,然后允许DatePicker解析它.
我希望我能像我一样帮助绝望的人.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。