javascript - Angular 4 使用 typescript 解析响应数据

标签 javascript angular typescript

我有如下响应数据:

{
  "content": [{
    "id": 1,
    "userName": "v7001",
    "status": 1,
    "userInfo": {
      "id": 1,
      "fullName": "Naruto Uzumaki",
      "firstName": "Naruto",
      "lastName": "Uzumaki",
      "address": "Konoha",
      "dob": 1509901200000
    }
  }, {
    "id": 2,
    "userName": "v7002",
    "status": 0,
    "userInfo": {
      "id": 2,
      "fullName": "Hinata Hyuga",
      "firstName": "Hinata",
      "lastName": "Hyuga",
      "address": "Konoha",
      "dob": 1509987600000
    }
  }],
  "last": true,
  "totalElements": 3,
  "totalPages": 1,
  "size": 20,
  "number": 0,
  "first": true,
  "sort": null,
  "numberOfElements": 3
}

和用户 Angular 4 来显示数据。我创建了 2 个接口(interface):用户信息

export class UserInfo {
  id: number;
  fullName: string;
  firstName: string;
  lastName: string;
  address: string;
  dob: string
}

和用户

import {UserInfo} from './user-info'

export class User {
  id: number;
  userName: String;
  status: String;
  userInfo: UserInfo;
}

用户服务:

getUsers(): Promise<User[]> {
  return this.http.get(this.userUrl)
    .toPromise()
    .then(response => response.json().data as User[])
    .catch(this.handleError);
}

我检查网络选项卡,API 成功获取数据。 在组件上:

user: User[];
selectedUser: User;
newUser: User;
data: any={};

constructor(private router: Router,
            private userService: UserService) {}

ngOnInit() {
  this.userService.getUsers().then(user => this.user = user); 
}

在 html 中:

 <tr role="row" class="odd" *ngFor="let lst of user.content">
   <td>{{lst.userInfo.fullName}}</td>
   <td>{{lst.userInfo.address}}</td>
</tr>

但是当应用程序运行时,控制台上显示错误消息:内容无效。 this.user 未定义。请给我建议。

最佳答案

如果您希望从 getUsers 方法接收 users 集合,那么尽管 返回 response.json().content >response.json().data,然后是 User[] 为收集成为 User[]

提供工具是有意义的
getUsers(): Promise<User[]> {
  return this.http.get(this.userUrl)
    .toPromise()
    .then(response => response.json().content as User[])
    .catch(this.handleError);
}

消费

this.userService.getUsers().then(users => this.users = users);

HTML

<tr role="row" class="odd" *ngFor="let lst of users">
  <td>{{lst.userInfo.fullName}}</td>
  <td>{{lst.userInfo.address}}</td>
</tr>

关于javascript - Angular 4 使用 typescript 解析响应数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47182319/

相关文章:

angular - 我们如何使用 Angular 处理 URL 中的特殊字符

Angular 和 NGRX : Filtering on a selector using NGRX entity

javascript - 需要访问函数外部和另一个函数内部的变量

javascript - 前期事件菜单链接

Angular2 通知组件关于在外部创建的 DOM 元素

validation - 使用 ngModel 验证 Angular 2 单选按钮

javascript - Protractor 断言数组的每个元素都小于 500

javascript - 如何通过单击链接在屏幕上打开一个框并在JS中单击外部时隐藏它

unit-testing - Angular 2 测试组件给出 "Error: Uncaught (in promise): Error: Template parse errors"

javascript - 如何从类引用中实例化一个 javascript 对象?