[英]when i parse my http response to object in angular 2 it don't parse the functions?
这是我的打字稿课
import { Hours } from "./hours";
export class Day {
public dayName: string;
public dayId: number;
public dayStatus: string = "Closed";
public checked: boolean = false;
public hours: Hours[] = new Array();
consturctor() {
}
public equals( dayid: number ): boolean {
if ( this.dayId == dayid ) {
return true;
}
return false;
}
public isChecked() {
let result: boolean;
if ( this.dayStatus == "Open" ) {
result = true;
}
else {
result = false;
}
return result;
}
}
当我将该对象发送到java春季的rest服务时,它将对象保存到数据库中,但是当我从数据库中获取该对象时,我得到了所有字段,但是当我尝试访问equals方法时,我得到了相等的错误不是一种方法。 响应的原型如下
__proto__
:
constructor
:
ƒ Object()
hasOwnProperty
:
ƒ hasOwnProperty()
isPrototypeOf
:
ƒ isPrototypeOf()
propertyIsEnumerable
:
ƒ propertyIsEnumerable()
toLocaleString
:
ƒ toLocaleString()
toString
:
ƒ ()
valueOf
:
ƒ valueOf()
__defineGetter__
:
ƒ __defineGetter__()
__defineSetter__
:
ƒ __defineSetter__()
__lookupGetter__
:
ƒ __lookupGetter__()
__lookupSetter__
:
ƒ __lookupSetter__()
get __proto__
:
ƒ __proto__()
set __proto__
:
ƒ __proto__()
它没有平等的方法。 如果我做一个新的Day(); 我得到下面的平等方法是代码我如何获得请求
this.http.get(url,options).map((res)=>res.json()).
subscribe((data)=>{ obj=data});
**编辑**
这是我发送到服务器的json
Day
checked: true
dayId:1
dayName:"Monday"
dayStatus:"Open"
hours:[Hours]
__proto__:
consturctor:ƒ ()
equals:ƒ (dayid)
isChecked:ƒ ()
constructor:ƒ Day()
__proto__:Object
在请求正文中变成这个
{
"dayStatus": "Open",
"checked": true,
"hours": [
{
"startAt": "00:00",
"closeAt": "23:59",
"maxPatientNo": "20"
}
],
"dayId": 4,
"dayName": "Thursday"
}
我得到所有领域。
正如我在评论中提到的,通常
以后在服务器上查询此数据时,您会收到data 。 行为不会通过网络传输,如果需要,您可以仅根据该数据构造一个新的类实例。
例如,使用以下实现:
export class Day {
public dayName: string;
public dayId: number;
public dayStatus: string;
public checked: boolean;
public hours: Hours[];
// the default constructor
constructor(name: string, id: number, status?: string, checked?: boolean, hours?: Hours[]) {
this.dayName = name;
this.dayId = id;
this.dayStatus = status || 'closed';
this.checked = checked || false;
this.hours = hours || [];
}
// static method that calls the constructor
// this is just like a constructor overload in other languages
public static fromObject(object: any) {
const {dayName, dayId, dayStatus, checked, hours} = object;
return new this(dayName, dayId, dayStatus, checked, hours);
}
public equals( dayid: number ): boolean {
if ( this.dayId == dayid ) {
return true;
}
return false;
}
public isChecked() {
let result: boolean;
if ( this.dayStatus == "Open" ) {
result = true;
}
else {
result = false;
}
return result;
}
}
您可以这样使用它:
this.http.get(url, options)
.map(res => res.json())
.map(parsed => Day.fromObject(parsed))
.subscribe(day => this.receivedDay = day);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.