我正在开发一个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等未定义的值。 –