【问题标题】:How to access nested attributes from an API using Angular如何使用 Angular 从 API 访问嵌套属性
【发布时间】:2020-11-07 09:49:38
【问题描述】:

我正在使用 Angular 从 API 获取数据。我一直在关注this youtube 视频,但没有演示访问嵌套属性。

您将如何从https://jsonplaceholder.typicode.com/users 访问“地址”属性,例如“街道”和“城市”

谢谢!

【问题讨论】:

    标签: angular api nested frontend


    【解决方案1】:

    看到您的 API,您的数据结构具有嵌套对象,而您参考的教程仅给出了 普通对象 的示例。 p>

    上述答案还建议了访问对象中嵌套属性的正确方法,但在这种情况下,我建议您以正确的方式构建对象,以便 Angular 自动正确映射您的嵌套对象。

    类似的东西。

    export class Location{
        public lat: string;
        public lng: string;
    }
      export class Company{
          public name: string;
          public catchPhrase: string;
          public bs: string;
      }
      
      export class Address{
        public street: string;
        public suite: string;
        public city: string;
        public zipcode: string;
        public geo: Location;
    }
    export class User{
        public id: number;
        public name: string;
        public username: string;
        public email: string;
        public address: Address;
        public phone: string;
        public website: string;
        public company: Company;
    }
    

    这样,当您调用 http get 服务时,您会以正确的嵌套格式获取记录,以便以后访问。例如

    this._http.get<User[]>(this.apiUrl);
    

    现在您可以使用点运算符 (.) 访问 User 对象内的嵌套对象。

    【讨论】:

      【解决方案2】:

      您可以使用以下代码访问它们。说propertiesList作为响应json然后

      ...
       const addressList = this.propertiesList.map(prop -> prop.address ? 
                            { 'street' : prop.address.street, 'city' : prop.address.city } : null );
      ...
      

      您可以在索引的帮助下访问它们

      const street = addressList[0].street;
      const city = addressList[0].city;
      

      【讨论】:

        【解决方案3】:

        假设你想访问数组的第一个对象。并且 API 响应被放置在一个响应变量中:

        const response = data //the data received from the API
        const address = response[0].address;
        const street = address.street;
        const city = address.city
        

        【讨论】:

        • 非常感谢!但这不会下载所有数据。有没有办法使用一个类来获取一些属性?
        • 如果你的 api 返回了所有的数据,那么你什么也做不了,如果你想要更少的数据,你必须改变 API
        猜你喜欢
        • 2021-03-12
        • 1970-01-01
        • 2019-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多