2017-11-06 1 views
0

Ich habe eckige Anwendung, die primeng calendar component verwendet.Erlaube nur den ersten Tag des Monats in Primeng Kalender auswählen

Ich muss eine Einschränkung hinzufügen, um nur das erste Datum jedes Monats auszuwählen.

Die Komponente verfügt über die Funktion zur Deaktivierung bestimmter Daten durch Einstellung der Eigenschaft disabledDates oder bestimmter Wochentage (disabledDays). Aber ich habe nichts gefunden, das die Tage des Monats deaktiviert.

Hat jemand eine Idee, wie man das umsetzt?

+0

Ich würde vorschlagen, keinen 30-Tage-Kalender zu verwenden, wenn Sie dem Benutzer nur die Möglichkeit geben, einen dieser Tage auszuwählen. Verwenden Sie einen Jahr/Monat-Selektor. – Joe

+0

@Joe Ich verstehe. Ich brauche in Zukunft noch ein paar Termine. –

Antwort

1

In Ordnung. Sie können die disabledDates Funktionalität verwenden, aber es wird nicht möglich sein, jeden Tag des Monats zu verwenden, also würde ich empfehlen, dass Sie einen Monat im Wert von deaktivierten Daten eingeben, dann hängen Sie in das onMonthChange Ereignis, um Ihre deaktivierten Daten zu aktualisieren wenn der Benutzer einen anderen Monat Ansichten:

<p-calendar [disabledDates]="invalidDates" (onMonthChange)="updateDisabledDates($event)"> 

Mit so etwas wie:

public disabledDates: Date[] = []; 

function updateDisabledDates(event) { 
    const daysInMonth = new Date(event.year, event.month, 0).getDate(); 
    disabledDates = [] 
    for (let i = 2; i < daysInMonth; i++) { 
    console.log(i) 
    disabledDates.push(new Date(event.year, event.month, i)); 
    } 
} 

es nicht getestet.

+0

Danke. Die Lösung funktioniert nur manchmal. Ich habe das Gefühl, dass die Überprüfung, die die Auswahlfähigkeit überprüft, parallel zur Ereignisbehandlung durchgeführt wird, und dies verursacht das Problem, aber ich bin mir nicht sicher. Ich debugge und versuche zu verstehen, was vor sich geht. Eine andere seltsame Sache ist, dass es jedes Mal funktioniert, wenn ich von Dezember auf Januar nächstes Jahr umschalte, und ich kann nicht verstehen warum. –

+0

Sind Sie sicher, dass es ausgelöst wird (eine Konsole in der Funktion, die im richtigen Monat aufgerufen wird)? Ich habe mir Sorgen gemacht, dass es nur ausgelöst wurde, wenn sich der Monat änderte, als der Benutzer es auswählte. – Joe

+0

Ja, ist es. Obwohl ich 'console.log' nicht benutzt habe. Ich habe einen Bremspunkt im Debugger benutzt - jedes Mal, wenn ich den Monat über einen Button änderte, habe ich den Code mit dem richtigen Monat eingegeben. –

Verwandte Themen