Angular 5, похоже, неправильно десериализует json из API в даты, по крайней мере, не в массиве. У меня есть такая модель с массивом дат:
export interface ProcessDefinition {
_id?: string;
processDefinitionName: string;
myDates: Date[];
}
У меня есть класс обслуживания, который использует HttpClient для возврата наблюдаемой, например, так:
public getItems(): Observable<ProcessDefinition[]> {
let url = this.apiUrl + this.entityName + '/';
this.loggerService.log(`Getting items with observable via http.`);
this.loggerService.log(`URL: ` + url);
return this.httpClient.get<ProcessDefinition[]>(url);
}
Я вызываю эту услугу из моего компонента, вот так:
public loadProcessDefinitionData(): void {
this.processDefinitionService.getItems().subscribe(items => {
this.processDefinitions = items;
// Does not help
// this.processDefinitions.forEach(processDef =>
// processDef.day1dates.forEach(day1d =>
// day1d = new Date(day1d))
// );
this.currentProcessDefinition = this.processDefinitions[0] || null;
// Nope
this.currentProcessDefinition.day1dates.forEach(dat => dat = new Date(dat));
// Would like this to work, confirming it's a real date.
console.log(JSON.stringify(this.currentProcessDefinition.day1dates[0].getMonth()));
});
}
Выше показаны мои попытки получить преобразование в «реальную дату» с использованием подхода «новая дата», обсуждавшегося в других вопросах. Я уверен, что это будет просто для кого-то, кто более знаком с синтаксисом.
Я хочу, чтобы ProcessDefinition [], который можно наблюдать, содержал массив реальных дат myDates, что подтверждается успешным вызовом getMonth () для одной из них. В идеале это преобразование должно происходить в службе, поэтому оно должно быть только в одном месте.
Спасибо