2017-11-20 5 views
11

Ich verwende ng-pick-datetime UI-Komponente für die Datumsauswahl. Ich deaktiviert readonly Modus, so dass der Eingang für die Eingabe mit Tastatur aktiviert ist.Angular 4 picker locale nicht ordnungsgemäß funktioniert

<owl-date-time name="client_birthday" #client_birthday="ngModel" 
    [placeHolder]="'DD.MM.YYYY'" 
    [locale]="ru" 
    [(ngModel)]="client.client_birthday" 
    [type]="'calendar'" 
    [dataType]="'string'" 
    [dateFormat]="'DD.MM.YYYY'" 
    [readonlyInput] ="false" 
    [autoClose] ="true" 
    [inputId]="'client_birthday'"             
></owl-date-time> 

Ich versuche RU locale anwenden date-fns mit:

ru: any; 
ruLocale = require('date-fns/locale/ru'); 
ngOnInit() {  
    this.ru = { 
     firstDayOfWeek: 1, 
     dayNames: [...], 
     dayNamesShort: [...], 
     monthNames: [...], 
     monthNamesShort: [...], 
     dateFns: this.ruLocale 
    }; 
} 

Als ich in den Eingang mit dd.mm.yyyy Format an, die Kommissionierer Tag als einen Monat und Monat als Tag macht, und das Jahr OK. Das einzige Format, das es erkennt, ist mm.dd.yyyy, was us locale zu sein scheint. Meine Kalendersprache hat sich wie erwartet geändert, aber ist es auch möglich, das Datumsformat für RU zu konfigurieren?

Ich würde jede Hilfe zu schätzen wissen.

+0

Haben Sie Datum-fns auch installiert? –

+0

@RajkumarRathi, ja –

+0

https://github.com/DanielYKPan/date-time-picker#localization löst das Problem – thakurinbox

Antwort

2

diesem ähnlich ist: durch die Eingabe auf Eingabefeld von ng-Pick-Datetime

@NgModule({ 
    providers: [ 
    { provide: LOCALE_ID, useValue: "ru-ru"}, 
    //otherProviders... 
    ] 
}) 

haben einen Blick auf diese How to set locale in DatePipe in Angular 2?

+1

Wenn Sie für eine 50-Punkte-Prämie gehen, ich ‚d empfehlen die _specific_ locale_ID bieten, anstatt darauf hindeutet sie das Modell folgen und passen sich ... –

+0

locale_ID ist ein konstanter Anbieter Token von Winkel Kern. Das ist der richtige Wert. – bryan60

+0

das hat leider nicht funktioniert. Es scheint nur für Rohre verwendet werden –

5

nicht in der Lage es Nähte zu tun, was Sie, wenn das Eingangsdatum wollen. Ich ging durch die Implementierung der ng-Pick-Datetime-Komponente. Bei der Eingabe, gegebene Eingabe von mit https://date-fns.org/v1.29.0/docs/parse bisher Objekt konvertiert Hier ist die Implementierung picker.component.ts/src/picker.component.ts Linie-1177-Methode-parseToDate

/** 
    * Parse a object to Date object 
    * @param {any} val 
    * @return {Date} 
    * */ 
    private parseToDate(val: any): Date { 
     if (!val) { 
      return; 
     } 

     let parsedVal; 
     if (typeof val === 'string') { 
      parsedVal = parse(val, this.dateFormat, this.now); 
     } else { 
      parsedVal = val; 
     } 

     return isValid(parsedVal) ? parsedVal : null; 
    } 

https://github.com/DanielYKPan/date-time-picker verwendet hat „Datum -fns ":" 2.0.0-alpha.7g "auf Paket json. Es hat ein Argument, um das Datumsformat an das Analysedatum zu übergeben.

parsedVal = parse(val, this.dateFormat, this.now); 

Aber neueste Version von Datum-FNS: "^ 1.29.0" Sie hat keinen Parmeter das Datumsformat zu übergeben. Also scheitert es auch an deinem Projekt. Bitte lesen Sie https://date-fns.org/v1.29.0/docs/parse

parse(argument, [options]) 
+0

Guter Punkt, danke. Vielleicht könnten Sie ein anderes Datumsauswahl-Plugin vorschlagen, das Datumsformatierung unterstützt? –

+0

Ich schlage vor, dass Sie den ng-pick-datetime-Code entsprechend Ihrer Anforderung bearbeiten und für Ihre Lösung verwenden. Ich habe kein Datepicker verwendet, das zu Ihrer Anforderung passt. https://github.com/kekeh/mydatepicker Dies unterstützt die Formatierung, aber nicht bei der Eingabe. Wenn meine Antwort Ihnen hilft, Ihr Problem zu lösen, stimmen Sie mich bitte ab;). –

Verwandte Themen