繁体   English   中英

当我解析我对角度2中的对象的http响应时,不解析函数吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM