Javascript 控制台上打印的角度2阵列,但可以';t在屏幕上打印对象属性

Javascript 控制台上打印的角度2阵列,但可以';t在屏幕上打印对象属性,javascript,arrays,json,angular,typescript,Javascript,Arrays,Json,Angular,Typescript,我在创建的服务中使用了以下方法: getPost(nid: string): Observable<Post[]>{ let url = "http://test.co.uk/api/v1/basic/" + nid; return this.http.get(url, {headers: this.headers}).map(res => res.json() as Post).catch(err => { return Observ

我在创建的服务中使用了以下方法:

  getPost(nid: string): Observable<Post[]>{
    let url = "http://test.co.uk/api/v1/basic/" + nid;
    return this.http.get(url,  {headers: this.headers}).map(res => res.json() as Post).catch(err => {

      return Observable.throw(err);
    });
  }
JSON提要如下所示(是的,数组中有一个对象):


有什么提示吗?

您正在将一个数组分配给应该是单个对象的对象。将数组的第一个元素复制到post变量中

this.post = res[0] as Post
旁注:将原始对象分配给类实例是不正确的。在这种情况下,您的
this.post.constructor
将不存在,并且
this.post instanceof post==false

您可以执行
Object.assign(this.post,res[0])
,但如果并非所有属性都始终存在,则可能需要清除现有属性


我更喜欢将对象形状定义为接口,这样您就不会有这个问题,因为所有的接口信息在运行时都会被删除,而类确实会发出一些代码,而不是在编译时只进行静态类型检查

这正是我所需要的…谢谢你,Juan。如果你能给我指一个地方,让我能读到更多关于这个的信息,那就太好了。读更多关于什么的信息?在需要对象的位置指定数组,并由于您强制转换了该对象而掩盖错误?不知道什么部分不清楚
  [  
   {  
      "nid":"3",
      "title":"When Unity meets Vuforia",
      "body":"<p>Unless you have been living under a rock in the past 7 - ...",
      "uid":"admin",
      "path":"\/node\/3",
      "field_article_image":"http:\/\/test.co.uk\/sites\/default\/files\/when-unity-meets-vuforia_0.jpg?itok=BGYaotay"
   }
]
export class Post{
  constructor(

public nid?: string,
public title?: string,
public body?: string
public image?: string
  ){
  }
}
this.post = res[0] as Post