【发布时间】:2018-11-17 12:30:39
【问题描述】:
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>
有人知道怎么解决吗?
【问题讨论】:
-
您是否处于负偏移时区?
-
我在这里是 UTC+1 / UTC+2,我没有任何问题,所以我猜这与本地显示日期、时区有关。 i.stack.imgur.com/9FPfn.png
-
@Pac0 我在 -3h,我的代码有误,请更新您的屏幕并告诉我是否可以。
-
这是我启动应用程序时看到的内容:i.stack.imgur.com/PDwDv.png。当我单击“切换到法语”时,没有任何变化。如果我更改日期,那么我有.this(消息已更改):i.stack.imgur.com/lIjwT.png。单击切换按钮也不会改变任何东西。但是,日期没有问题(在我这边)
-
也测试了 stackblitz,我这边没问题。
标签: angular typescript datepicker angular-material