2017-05-04 7 views
2

Ich verwende den ng2-Datumszeiger in meiner eckigen App und ich möchte das Datum aus der Typoskript-Datei aktualisieren.ng2-datepicker Wie ändere ich das Datum vom Typescript Code?

im HTML-Template:

<ng2-datepicker [options]="optionsForMenuDate" [(ngModel)]="selectedDate" name="selectedDate"></ng2-datepicker> 

Es wird zu einem Moment Objekt verbindlich ist, so versuche ich, es so zu aktualisieren (ich habe Moment in der Winkellösung enthalten):

this.selectedDate = this.moment(date); 

Wo ist das js Date-Objekt, auf das ich das Datum setzen möchte. Dies setzt die Komponente nur auf null, obwohl auch dieses this.selectedDate nicht null ist.

console.log(this.selectedDate); // logs a moment object 

Irgendwelche Ideen, wie man das erreicht?

Antwort

1

ich das gleiche Problem hatte und ich habe es durch folgende Arbeiten.

Das Problem mit Ihrem Code bei unterhalb der Linie ist,

[(ngModel)]="selectedDate" 

Hier Eigenschaft 'selectedDate' vom Typ 'DateModel' und nicht der Moment Objekt sein sollte. Die DateModel wird definiert, bei,

import {DateModel} from "ng2-datepicker"; 

und es hat eine folgende Eigenschaften,

export declare class DateModel { 
    day: string; 
    month: string; 
    year: string; 
    formatted: string; 
    momentObj: moment.Moment; 
    constructor(obj?: IDateModel); 
} 

Jetzt müssen Sie momentObj und formatiert Eigenschaften festgelegt, um es zu arbeiten. Hier

ist der Beispielcode,

let dateModel:DateModel = new DateModel(); 
let momentObj = moment('05-11-1986', "MM-DD-YYYY"); 
dateModel.momentObj = momentObj; 
dateModel.formatted = momentObj.format(); 
this.selectedDate = dateModel; 
+0

Es ist eine interessante Lösung, werde ich für diese upvote und es jetzt verwenden. Ich werde eine sauberere Lösung wählen. Ich habe Ihre Lösung geändert: dateModel.formatted = momentObj._i; weil ich das Display so besser fand. Wenn das ausgewählte Datum im aktuellen Monat liegt, wird das ausgewählte Datum beim ersten Öffnen des Datumsspeichers nicht angezeigt. Vielen Dank – Sam

+0

tatsächlich fand ich dateModel.formatted = momentObj.format ("MM-DD-YYYY"); am besten arbeiten – Sam

Verwandte Themen