Angular 2 Date Deserialization
Ich habe eine Angular 2-Anwendung. Ein Dienst fordert Daten von einer API an, die die folgenden Ergebnisse zurückgibt:
{
"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 so aus (ich habe die Fehlerbehandlung der Kürze halber gekürzt, da wir hier auf einem guten Weg sind):
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:
results: SomeModel[];
errorMessage: string;
ngOnInit() {
this._someService.getList()
.subscribe(
results => this.results = results,
error => this.errorMessage = <any>error);
}
und mein Modell wie folgt:
export class SomeModel {
constructor(
public id: number,
public timestamp: Date,
public sourceDatabaseServer: string,
public sourceDatabaseName: string,
public targetDatabaseServer: string,
public targetDatabaseName: string
) { }
}
Alles sah so aus, als würde es funktionieren, als ich versuchte, den Zeitstempel mit der DatePipe wie folgt anzuzeigen{{item.timestamp | date:'short'}}
Die Anwendung wird mit der folgenden Fehlermeldung gestartet:
Invalid argument '2016-04-17T19:40:38.2424240+01:00' for pipe 'DatePipe' in [{{result.timestamp | date:'short'}}
Nach einigen Nachforschungen glaube ich, dass der Zeitstempel nicht tatsächlich in das @ konvertiert wirDate
Typ, sondern wird nur ein @ gesetstring
. Ich vermute, das ist, weil dieDate
type ist zur Zeit nicht bekanntResponse.json()
wird genannt? oder vermisse ich etwas ganz anderes? Gibt es ein Update oder eine Problemumgehung dafür?