我正在開發一個Angular(4.1.2)Web應用程序以及相應的ASP.Net Core(1.1)Web API。從Web API響應的角度日期
我有一個Angular服務,它向我的Web API發出一個http請求數據,而從Angular服務返回的對象中的日期不是Date
類型。
在我的場景中,我的web應用程序從我的SQL數據庫獲取Tasks
,每個Task
包括開始和結束DateTime
。我的TasksController使用AutoMapper將每個Task
映射到TaskViewModel
對象,我的TaskViewModel
具有DateTime
類型的開始和結束屬性。
如果我把我的TasksController一個斷點並檢查TaskViewModel
對象要返回,該請求之後,開始和結束屬性DateTime
型的,因此對日,月,小時等無一不精。
在角我有一個task-api.service.ts
文件,其中包含下面的代碼:
public getTasks(): Observable<Task[]> {
let tasksArray: Observable<Task[]> = this.http.get("/api/tasks").map((response: Response) => {
return <Task[]>response.json();
}).catch(this.handleError);
tasksArray.forEach(item => {
console.log("Start: " +
item.map(task => {
if (task.start instanceof Date) {
console.log(task.start + " is date.");
} else {
console.log(task.start + " is not date.");
}
}));
});
return tasksArray;
}
當我console.log()
它們看起來2017-01-01T1 0:00:00
開始和結束日期。我測試了日期以檢查它們。
我的角度Task
類的定義是這樣的:
export class Task {
private _children: Task[];
get children(): Task[] {
//console.log("Getting children");
return this._children;
};
set children(value: Task[]) {
//console.log("Setting children");
this._children = value;
};
constructor(
public id: string,
public scheduleId: string,
public description: string,
public taskTypeId: number,
public taskType: string,
public locationId?: number,
public start?: Date,
public finish?: Date,
public duration?: number, // milliseconds
public parentId?: string,
public dependentTaskId?: string,
public label?: string,
children?: Task[])
{
if (children != null)
{
this.children = children;
};
}
};
如何確保開始和結束日期在我的打字稿對象是Date
型的嗎?
爲什麼要檢查的響應類型是最新的嗎?你可以轉換爲你想要的類型。對? –
我只是檢查類型,以幫助我調查爲什麼日期不被我的使用日期的業務邏輯代碼所理解。我可觀察的Tasks數組中的開始和結束屬性只是字母和數字的字符串,而不是日期,因此我的業務邏輯不能與它們一起工作。 – TDC
你解決了這個問題嗎?我正在經歷同樣的事情。從web api收到的日期有getMonth,getFullYear等未定義的值。 –