typescript - Kuinka muuttaa Angular Material -päivämäärävalitsimen formaattia


Tämä on päivämäärän muoto, jonka saan käyttäessäni Angular Material -päivämääränvalitsinta....Ke 21 marras 2018 00:00:00 GMT+0530 (Intian normaaliaika)

Mutta tarvitsen päivämäärän muodossa (VVVV-KK-PP) tai (VVVV-KK-PPTHH:mm).

tämä on malliluokka, jota käytän kerätäkseni tietoja Angular Material -lomakkeesta

export class FlightSchedule {

    constructor(
        public destination: string,
        public origin: string,
        public date: string,
        public limit: string
    ) {}

}

Ole hyvä ja auta minua, en pysty muuntamaan päivämäärää muodossa YYYY-MM-DD tai YYYY-MM-DDTHH:mm.

Olen uusi Angularin käyttäjä

Kiitos etukäteen

Vastaus #1

Sinun tulee antaa objekti, joka sisältää käyttämäsi formaat tyypit. Objektin tulisi näyttää jotakin tältä:

export const MY_FORMATS = {
  parse: {
    dateInput: 'LL',
  },
  display: {
    dateInput: 'YYYY-MM-DD',
    monthYearLabel: 'YYYY',
    dateA11yLabel: 'LL',
    monthYearA11yLabel: 'YYYY',
  },
};

Sinun täytyy sitten lisätä se palveluntarjoajiesi taulukkoon, näin:

  import { MAT_DATE_FORMATS } from '@angular/material/core';
  import { MomentDateAdapter } from '@angular/material-moment-adapter';

  //...

  providers: [
    {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},
    {provide: MAT_DATE_FORMATS, useValue: MY_FORMATS},
  ],

Tässä on StackBlitz-demo, joka näyttää sen toimivan

Vastaus #2

Ei tarvitse käyttää MomentDateAdapter!

Tässä on ratkaisuni vähimmällä koodimäärällä ja käyttämällä MAT_NATIVE_DATE_FORMATS.

  1. Määritä omat päivämäärämuotosi
import { MatDateFormats, MAT_NATIVE_DATE_FORMATS } from '@angular/material';

export const GRI_DATE_FORMATS: MatDateFormats = {
  ...MAT_NATIVE_DATE_FORMATS,
  display: {
    ...MAT_NATIVE_DATE_FORMATS.display,
    dateInput: {
      year: 'numeric',
      month: 'short',
      day: 'numeric',
    } as Intl.DateTimeFormatOptions,
  }
};
  1. Käytä niitä
@Component({
  selector: 'app-vacation-wizard',
  templateUrl: './vacation-wizard.component.html',
  styleUrls: ['./vacation-wizard.component.scss'],
  providers: [
    { provide: MAT_DATE_FORMATS, useValue: GRI_DATE_FORMATS },
  ]
})

Älä unohda asettaa sopivaa kieltä!

constructor(private readonly adapter: DateAdapter<Date>) {}
this.adapter.setLocale(this.translate.currentLang);

Se on kaikki!

Vastaus #3

import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material';
import { MomentDateModule, MomentDateAdapter } from '@angular/material-moment-adapter';

 export const DateFormats = {
            parse: {
                dateInput: ['YYYY-MM-DD']
            },
            display: {
                dateInput: 'YYYY-MM-DD',
                monthYearLabel: 'MMM YYYY',
                dateA11yLabel: 'LL',
                monthYearA11yLabel: 'MMMM YYYY',
            },
        };

    providers: [

        { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
          { provide: MAT_DATE_FORMATS, useValue: DateFormats }

      ],

lisää yllä oleva koodi app.moduleesi. se toimii täydellisesti minulla.

Aiheeseen liittyviä artikkeleita