Ich habe eine Angular 2-Anwendung. Ein Dienst ist fordert Daten von einem api, die die Ergebnisse wie die folgenden zurück:Angular 2 Datum Deserialisierung
{
"data":[
{"id":1,"timestamp":"2016-04-17T19:52:53.4510935+01:00","sourceDatabaseServer":"127.0.0.1","sourceDatabaseName":"Database1","targetDatabaseServer":"192.168.99.101","targetDatabaseName":"Database2"},
{"id":2,"timestamp":"2016-04-17T19:52:53.4510935+01:00","sourceDatabaseServer":"127.0.0.2","sourceDatabaseName":"Database3","targetDatabaseServer":"192.168.99.102","targetDatabaseName":"Database4"},
{"id":3,"timestamp":"2016-04-17T19:52:53.4510935+01:00","sourceDatabaseServer":"127.0.0.3","sourceDatabaseName":"Database5","targetDatabaseServer":"192.168.99.103","targetDatabaseName":"Database6"}
]
}
Mein Angular 2 Service sieht wie folgt aus (ich den Fehler geschnitten habe Kürze Handhabung, da wir auf dem Weg sind glücklich hier) :
getList() : Observable<SomeModel[]> {
return this._http.get(this._getListUrl).map(this.extractData);
}
private extractData(res: Response) {
return res.json().data || {};
}
und meine Komponente wie folgt aus:
results: SomeModel[];
errorMessage: string;
ngOnInit() {
this._someService.getList()
.subscribe(
results => this.results = results,
error => this.errorMessage = <any>error);
}
und mein Modell wie folgt aus:
export class SomeModel {
constructor(
public id: number,
public timestamp: Date,
public sourceDatabaseServer: string,
public sourceDatabaseName: string,
public targetDatabaseServer: string,
public targetDatabaseName: string
) { }
}
Alles sah aus wie es funktioniert jedoch, wenn ich Zeitstempel mit dem DatePipe wie so {{item.timestamp | date:'short'}}
die Anwendung mit der folgenden Fehlermeldung sprengt anzuzeigen versucht:
Invalid argument '2016-04-17T19:40:38.2424240+01:00' for pipe 'DatePipe' in [{{result.timestamp | date:'short'}}
Nach einigen Untersuchungen glaube ich, dass Zeitstempel nicht wirklich ist wird in den Date
Typ konvertiert, wird aber stattdessen nur auf string
gesetzt. Ich schätze das ist, weil der Date
Typ nicht zu der Zeit bekannt ist Response.json()
heißt? oder vermisse ich etwas ganz anderes? Gibt es dafür eine Lösung?
Wenn Sie tun, um ein '.json()', die nicht einen String verwandeln wird (auch wenn es in einigem Datumsformat ist) zu einem aktuellen Zeitpunkt Objekt. Es wird weiterhin eine Zeichenfolge sein. Sie müssen also 'new Date (herePassTheString) 'eingeben – arg20
Wenn Sie es nur anzeigen, kann das DatePipe in Angular 2 jetzt das ISO-Zeichenfolgenformat verwenden. https://angular.io/docs/ts/latest/api/common/index/DatePipe-pipe.html Ich weiß nicht ob das schon immer so war, aber jetzt ist es soweit. ;) – Derrick