2017-06-02 9 views
0

Abrufen der Daten vom Dienst und subskribierte den Datensatz mit Schnittstellentyp in angular2 (typescript).Null-Datum Typ gibt 1970 Datum Wert in angular2 zurück

Schnittstelle hat Datum (startDate Feldname: Datum Typ) Feld Von dem Dienst, wenn die StartDate-Feldwerte null in HTML-Seitenformat erhalten den 01.01.1970 Wert.

interface : 
    export class name { 
    public realStartDate?: Date 
} 


subscribe : 
this.data = data.map(item => new name (new Date(item.startDate)) 
+3

Was erwarten Sie? – Saravana

+0

item.startDate ist möglicherweise null. Setzen Sie einen Debugger und überprüfen Sie. 'new Date (null)' return 01/01/1970 – adiga

+0

Wenn Sie das aktuelle Datum verwenden möchten, verwenden Sie 'item.startDate? neues Datum (items.startDate): neues Date() '. Auch deine Klasse ist eine schlechte Idee. _never_ '' classe's verwenden, um Serverantworten darzustellen, bevorzugen 'interface's dafür. In diesem Fall benötigen Sie kein Wrapper-Objekt. –

Antwort

0

Need einen Null-Check für item.startDate hinzuzufügen.

"neues Datum (item.startDate)" gibt 01.01.1970 zurück, wenn der Wert von item.startDate null ist.

Versuchen Sie es zu schreiben, wie folgt:

subscribe : 
this.data = data.map(item => new name (item.startDate==null?new Date():new Date(item.startDate)) 
0

Wenn Sie item.startDate ? new Date(items.startDate) : new Date() zum aktuellen Datum Verwendung auf Standard möchten. Auch deine Klasse ist eine schlechte Idee. Verwenden Sie keine Klassen, um solche Objekte darzustellen, sondern verwenden Sie stattdessen Schnittstellen.

Egal, was Sie brauchen, ist im Wesentlichen

dated.ts

export interface Dated { 
    realStartDate?: Date; 
} 

Service-Artikel-service.ts

import {Inject} from '@angular/core'; 
import {Http} from '@angular/http'; 
import {Observable} from 'rxjs'; 
import 'rxjs/add/operator/map'; 

import {Dated} from './dated'; 

@Inject export default class DatedItemsService { 
    constructor(readonly http: Http) {}  

    get(id): Observable<Dated> { 
    return this.http.get(`/api/v1/dateditems/${id}`) 
     .map(response => response.json()) 
     .map(({startDate}) => ({ 
     realStartDate: startDate ? new Date(startDate): undefined 
     }); 
    } 
} 

EDIT: Basierend auf Kommentare Es scheint, dass ein leerer Wert anstelle von th gewünscht wird Das aktuelle Datum, also habe ich die Antwort entsprechend aktualisiert.

+0

Meine Anforderung, den leeren Wert nicht den aktuellen Datumswert zu erhalten. Thx –

+0

Ich sehe, wäre nett, wenn Sie das vorher gesagt hätten :) eine sek. –

+0

@Govindaraj aktualisiert –