Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 2:如何从嵌套的json对象中获取一些数据?_Json_Angular - Fatal编程技术网

Angular 2:如何从嵌套的json对象中获取一些数据?

Angular 2:如何从嵌套的json对象中获取一些数据?,json,angular,Json,Angular,我想展示一个人的街道。但是我的代码不起作用。我想我做错了。(获得一个人的名字非常有效) json文件: { "id":1, "name": "someName", "address":{ "street":"someStreet", "number":"10" } } 服务获取json: public getPerson(id:string):Observable<Person> { return this.h

我想展示一个人的街道。但是我的代码不起作用。我想我做错了。(获得一个人的名字非常有效) json文件:

{
  "id":1,
  "name": "someName",
  "address":{
      "street":"someStreet",
      "number":"10"
  }
}
服务获取json:

 public getPerson(id:string):Observable<Person> {
               return this.http.get(PersonService.PATH + id + '.json')
                  .map((res:Response) => res.json());
        }
地址:

export class Address {
    street:string;
    number:number;


    constructor(street:string, number:number) {
        this.street = street;
        this.number = number;
    }

    public static createEmptyAddress():Address {
        return new Address("",0);
    }

}

我认为它在开始时适用于
person.name
,因为您在
PersonDetail
组件中创建了一个空的person。但不适用于地址,因为对应的地址为空:

public static createEmptyPerson():Person{
  return new Person(0, '',null);
}
由于HTTP请求是异步的,因此稍后将提供此人的完整数据

我认为有两种方法可以解决您的问题:

  • 在模板内容周围使用
    ngIf

    template: `
      <div *ngIf="person">
        <h3>Detail of {{person.name}}</h3>
        <p>{{person.address.street}}</p>
      </div>
    `
    

    • 您的Person类难道没有输入错误吗

      adress:Address
      
      我认为应该是这样

      address:Address
      

      您确定已设置
      个人地址吗?您的意思是什么?我必须在PersonDetail类中设置person.address吗?当您将
      {{{person.address.street}}

      更改为
      {{person.address}

      时会显示什么?这会输出什么吗?没有,div是空的创建
      person
      实例可能有问题。我想我的服务类不会从person那里获取我的地址。我该怎么做?在这种情况下遇到了一个问题,即使数据存在(我用console.log检查),最终起作用的是Evlis操作符object@MohamedB当前位置我也面临同样的问题。你能解决这个问题吗?
      template: `
        <h3>Detail of {{person?.name}}</h3>
        <p>{{person?.address?.street}}</p>
      `
      
      adress:Address
      
      address:Address