【发布时间】:2020-03-06 03:05:30
【问题描述】:
我有一个通过MomentDateAdapter 使用momentjs 的Angular Material Datepicker。我想将模型接收到的值格式化为YYYY-MM-DD。目前模型中的值为2019-11-09T05:00:00.000Z。
我在表单控件中使用自定义日期格式,使用MAT_DATE_FORMATS 来显示详细日期,例如November 9, 2019。但是,这不会影响模型获得的价值。
这是设置表单控件格式的代码。我没有看到任何设置模型值格式的选项。
const VERBOSE_DATE_FORMAT = {
parse: {
dateInput: ['LL', 'YYYY-MM-DD' ],
},
display: {
dateInput: 'LL',
monthYearLabel: 'MMM YYYY',
dateA11yLabel: 'LL',
monthYearA11yLabel: 'MMMM YYYY',
},
}
@Component({
...
providers: [
{provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},
{provide: MAT_DATE_FORMATS, useValue: VERBOSE_DATE_FORMAT},
]
})
...
我尝试使用(dateInput)="onDateChange($event)"。通过$event.target 暴露MatDatepickerInput 组件。 $event.target.value 是一个 Moment 对象。我尝试使用$event.target.value = $event.target.value.format('YYYY-MM-DD') 设置该值,但这并不影响模型。
<mat-form-field>
<input matInput [matDatepicker]="date"
placeholder="Date"
#date="ngModel"
[(ngModel)]="item.date"
name="date"
autocomplete="off"
(dateInput)="onDateChange($event)"
>
<mat-datepicker-toggle matSuffix [for]="date"></mat-datepicker-toggle>
<mat-datepicker #date>
</mat-datepicker>
</mat-form-field>
onDateChange( $event ) {
const formatted = $event.value.format('YYYY-MM-DD')
$event.target.value = formatted
}
我希望 item.date 成为 2019-11-09。我怎样才能做到这一点?
【问题讨论】:
标签: angular date angular-material momentjs