角度打字稿语法如何使用两个聚合对象访问返回数据

时间:2018-12-11 19:28:19

标签: angular typescript

我一直停留在这种打字稿语法上,其中WebAPI返回带有两个对象的DTO。以下返回对象是:

{
  "userList": [{
      "id": 1,
      "firstNm": "John",
      "lastNm": "Doe"
    },
    {
      "id": 2,
      "firstNm": "Jim",
      "lastNm": "Doe"
    }
  ],
  "selectedIds": [158, 155]
}

在我的Angular TS代码中,我得到了以下代码 在声明中,我尝试将users声明为any[],但 CLI编译器以红色突出显示了usersList属性,并指出'usersList'不是any[]类型的成员。

我也尝试用memberList: any[]声明User的接口,但是得到了相同的错误消息。因此,在定义users: any[]User[]时,我得到的是相同的消息。

感谢您的帮助。

谢谢

getUsers() {
  this.meetingService.GetCommitteeMembersAsync(this.request.meetingId)
    .subscribe((data: any[]) => {
      var _test = data;
      this.users = _test.userList;
    });
}

2 个答案:

答案 0 :(得分:1)

您的protocol DrawerViewController { func configureDrawer(drawerContainerView: UIView, overlaidView: UIView) } 将是data类型,用户将是ComitteeMembersData

UserList

答案 1 :(得分:-1)

您要获取的数据具有以下格式:

{
  "userList": [{
      "id": 1,
      "firstNm": "John",
      "lastNm": "Doe"
    },
    {
      "id": 2,
      "firstNm": "Jim",
      "lastNm": "Doe"
    }
  ],
  "selectedIds": [158, 155]
}

它基本上可以是any类型,而不是any[]类型。 data.userList可以是any[]。因此,要解决此问题,只需执行以下操作:

users: any[];
...
getUsers() {
  this.meetingService.GetCommitteeMembersAsync(this.request.meetingId)
    .subscribe((data: any) => {
      this.users = data.userList;
    });
}