2017-03-13 46 views
1

有了邮递员我得到在身体下面的JSON正确的反应:问题与张贴在角2一个对象,打字稿

{ 
    "cpu": { 
     "filters": [ 
      ] 
    } 
} 

在我的角度分2次服我张贴这样的要求:

import { Injectable } from '@angular/core'; 
import { Http, Headers, RequestOptions, Response } from '@angular/http'; 
import { BaseService } from './base.service'; 
import { Observable } from 'rxjs/Observable'; 
import { Cpu } from '../entities/cpu'; 
import { PostObject } from '../entities/post-object'; 
import { CPU } from '../datasource/database-data'; 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class CpuService extends BaseService { 
    postObject: PostObject; 

    constructor(private http: Http) { 
     super(); 
    } 

     getCpus(): void { 
     this.postObject = new PostObject(); 
     console.log(JSON.stringify(this.postObject)); 
      this.http.post(this.getUrl('/searchCPU'), JSON.stringify(this.postObject)) 
       .subscribe((result: any) => 
        console.log(result); 
        return result 
       }); 
     } 
}` 

的postObject:

export class PostObject { 
    cpu: { 
     filters: string[] 
    } 
} 

当我控制台登录我postObject对象,它是空的......?也许this.postObject = new PostObject();是错误的..?

+0

你认为它是什么? – echonax

+0

你在PostObject中设置了哪些数据? –

+0

而“空”是什么意思?未定义或者根本没有数据?您需要将字符串集合添加到filters数组中。 –

回答

0

类需要一个构造函数,如果这是你要送什么。我想知道发送空对象的用例,但您也可以跳过这些类并手动创建一个对象。这不会是很好的,虽然维持,但可以用下面的方式实现:

this.postObject = {cpu:{filters:[]}} 

如果你想要类,您将有两个:

export class PostObject { 
    constructor(public cpu: Cpu) {} 
} 

export class Cpu { 
    constructor(public filters: string[]) {} 
} 

,并创建一个新的PostObject像这样:

this.postObject = new PostObject(new Cpu([])) 

这两种方法实现你想要的,即:

{ 
    "cpu": { 
     "filters": [ 
      ] 
    } 
} 
0

当你想JSON作为人体后,设置正确的Content-Type头:

this.http.post(this.getUrl('/searchCPU'), JSON.stringify(this.postObject), {headers:{'Content-Type': 'application/json'}})