2017-09-16 10 views
-1

J'ai un contrôle de calendrier, je veux lui donner de la valeur, mais j'ai l'erreur suivante sur la ligne ci-dessous et la valeur n'est pas définie.Comment régler le calendrier en utilisant le calendrier primeng?

this.data.dateIn = this.selecteddata.dateIn; 

<p-calendar [(ngModel)]="data.dateIn" [showIcon]="true" name="dateInCalendar" 
      required #dateInCalendar="ngModel"> 
</p-calendar> 

Erreur:

ERROR Error: Uncaught (in promise): TypeError: date.getMonth is not a function TypeError: date.getMonth is not a function at Calendar.webpackJsonp.../../../../primeng/components/calendar/calendar.js.Calendar.formatDate (calendar.js:649) at Calendar.webpackJsonp.../../../../primeng/components/calendar/calendar.js.Calendar.updateInputfield (calendar.js:252) at Calendar.webpackJsonp.../../../../primeng/components/calendar/calendar.js.Calendar.writeValue (calendar.js:595) at forms.es5.js:1779 at forms.es5.js:2965 at Array.forEach() at FormControl.webpackJsonp.../../../forms/@angular/forms.es5.js.FormControl.setValue (forms.es5.js:2965) at forms.es5.js:4367 at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:365) at Object.onInvoke (core.es5.js:3890) at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:364) at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.run (zone.js:125) at zone.js:758 at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:398) at Object.onInvokeTask (core.es5.js:3881) at Calendar.webpackJsonp.../../../../primeng/components/calendar/calendar.js.Calendar.formatDate (calendar.js:649) at Calendar.webpackJsonp.../../../../primeng/components/calendar/calendar.js.Calendar.updateInputfield (calendar.js:252) at Calendar.webpackJsonp.../../../../primeng/components/calendar/calendar.js.Calendar.writeValue (calendar.js:595) at forms.es5.js:1779 at forms.es5.js:2965 at Array.forEach() at FormControl.webpackJsonp.../../../forms/@angular/forms.es5.js.FormControl.setValue (forms.es5.js:2965) at forms.es5.js:4367 at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:365) at Object.onInvoke (core.es5.js:3890) at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:364) at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.run (zone.js:125) at zone.js:758 at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:398) at Object.onInvokeTask (core.es5.js:3881) at resolvePromise (zone.js:710) [angular] at :4200/polyfills.bundle.js:7469:17 [angular] at Object.onInvokeTask (core.es5.js:3881) [angular] at drainMicroTaskQueue (zone.js:591) [] at XMLHttpRequest.ZoneTask.invoke (zone.js:464) []

+0

après le code qui a Date.getMonth – Sajeetharan

+2

@Sajeetharan On peut dire qu'elle est de primeng https://github.com/primefaces/primeng/blob/master/src/app/components/calendar/calendar.ts#L1235 – yurzui

+0

Je vois que vous êtes un développeur .Net. Cool, vous êtes PrimeFaces sur cette plate-forme. Je ne savais pas que vous pourriez exécuter JSF ou, plus générique, le code java sur .Net ... – Kukeltje

Répondre

0

résolu le problème, en fournissant la solution pour aider les autres, juste convertir selecteddata.dateIn à .toDate().

this.data.dateIn = this.selecteddata.dateIn.toDate(); 
1
TypeError: date.getMonth is not a function 

=> Je pense que vous utilisez la fonction pour obtenir le mois de la date. Mais la date est invalide ou mauvais format. C'est pourquoi votre fonction de format ne fonctionne pas.

Avec mon idée, S'il vous plaît utilisez moment.js pour envelopper votre date d'abord. exemple:

let selectedDate = moment(dateString); 

Si vous voulez obtenir le mois, vous utilisez simplement:

let month = ("0"+(selectedEndDate.get("month")+1)).slice(-2); 

Votre date de format est invalide avec p-calendrier. vous pouvez utiliser et transmettre au calendrier:

this.currentDate = moment(new Date()).format('YYYY-MM-DD');