如何只选择年份的日期

时间:2020-02-03 10:36:29

标签: angular-material angular8 mat-datepicker

你好,我正在开发一个角度为8的应用程序,我的输入仅包含年份。 我使用过mat-datepicker,只想选择年份。

<mat-form-field class="input-control">
      <input matInput placeholder="{{'enter'|translate}}.." [formControl]="form.controls.openedAt"
             [matDatepicker]="date" readonly>
      <mat-datepicker-toggle matSuffix [for]="date"></mat-datepicker-toggle>
      <mat-datepicker #date startView="multi-year"></mat-datepicker>
    </mat-form-field>

此代码首先显示年视图,但是当我选择年时,将打开月视图,然后是天视图。

那么我如何只选择年份,或在mat-datepicker上仅显示年份视图?

2 个答案:

答案 0 :(得分:2)

此功能尚未完全实现。您可以在这里看到它:

https://github.com/angular/components/issues/4853

现在您可以尝试以下操作:

https://stackblitz.com/edit/angular-mulitdate-picker-demo

答案 1 :(得分:0)

I did like this:

html:
            <mat-form-field
                appearance="outline">
                <mat-label>Ano</mat-label>
                <input [(ngModel)]="selectYear" [formControl]="dateForm" matInput 
                [matDatepicker]="picker" />
                <mat-datepicker-toggle matSuffix [for]="picker" ></mat-datepicker- 
                toggle>
                <mat-datepicker 
                #picker
                startView="multi-year"
                (yearSelected)="chosenYearHandler($event, picker)"
                ></mat-datepicker>
            </mat-form-field>

component: 

export const MY_FORMATS = {
  parse: {
    dateInput: 'YYYY',
  },
  display: {
    dateInput: 'YYYY',
    monthYearLabel: 'YYYY',
    monthYearA11yLabel: 'YYYY',
  },
};

, 供应商: [ { 提供:DateAdapter, useClass: MomentDateAdapter, deps:[MAT_DATE_LOCALE,MAT_MOMENT_DATE_ADAPTER_OPTIONS] },

{provide: MAT_DATE_FORMATS, useValue: MY_FORMATS},

]

     chosenYearHandler(ev, input){
          let { _d } = ev;
          this.selectYear = _d;
          input._destroyPopup()
        }

Its works well and very simple!!!