问题描述
我试图让两个日期选择器在同一视图上显示不同的日期格式。一个应显示month/year
,另一个应显示month/day/year
。问题在于提供程序仅注入一种格式,因此两个控件使用相同的date format
。由于月/年日期选择器缺少日期,因此这导致date.getFullYear()
不是函数错误。以下是我组件中的提供者部分-
providers: [
{
provide: DateAdapter,useClass: MomentDateAdapter,deps: [MAT_DATE_LOCALE,MAT_MOMENT_DATE_ADAPTER_OPTIONS]
},{ provide: MAT_DATE_LOCALE,useValue: RANGE_FORMATS }
],
还有RANGE_FORMATS变量:
export const RANGE_FORMATS = {
parse: {
dateInput: 'MM/DD/YYYY',},display: {
dateInput: 'MM/DD/YYYY',monthYearLabel: 'MMM DD YYYY',dateA11yLabel: 'LL',monthYeara11yLabel: 'MMMM DD YYYY',};
由于MM/DD/YYYY
变量“ RANGE_FORMATS
”对此进行了指定,因此页面当前显示为'dateInput
'。然后,两个控件都显示month/day/year
。我需要的是格式化html
中显示的日期的格式,或者为每个dateInput
控件使用不同的提供者datepicker
。
下面是日期范围日期选择器,其格式为month/day/year
-
<div class="toolbar">
<mat-form-field appearance="fill">
<mat-label>Enter a date range</mat-label>
<mat-date-range-input [formGroup]="range" [rangePicker]="picker">
<input matStartDate formControlName="start" placeholder="Start date">
<input matEndDate formControlName="end" placeholder="End date">
</mat-date-range-input>
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-date-range-picker #picker></mat-date-range-picker>
</mat-form-field>
<mat-date-range-picker #pickerRange></mat-date-range-picker>
下面是month/year
日期选择器,它使用MM/YYYY
格式-
<div>
<mat-card>
<mat-card-content>
<mat-card-title>Generate Invoice for</mat-card-title>
<mat-form-field color="accent">
<mat-label>Month and Year</mat-label>
<input matInput [matDatepicker]="dp" [formControl]="date">
<mat-datepicker-toggle matSuffix [for]="dp"></mat-datepicker-toggle>
<mat-datepicker #dp
startView="multi-year"
(yearSelected)="chosenYearHandler($event)"
(monthSelected)="chosenMonthHandler($event,dp)">
</mat-datepicker>
</mat-form-field>
<app-datepicker [change]="changedateinput()"></app-datepicker>
</mat-card-content>
</mat-card>
</div>
如何显示日期范围MM/DD/YYYY
和月份年份日期选择器MM/YYYY
?
解决方法
对于更改日历视图,请添加带有以下选项的startView-月,年或多年