离子3-尝试在设备上运行时,属性“数据”在类型“ {}”上不存在

时间:2019-01-28 09:34:43

标签: angular ionic-framework

尝试在Android设备上运行Ionic 3 App时出现错误。在浏览器上可以正常运行,但是我猜想在运行/部署到设备时还有一层额外的验证。

这是有问题的代码:

getHomephones(auth_token) {

    return new Promise(resolve => {
      this.apiProvider.getRemoteHomephones(auth_token).then(result => {
          this.createOrUpdateHomephones(result.data).then(response => {
            resolve(response);
          });
        });
    });
  }

调用api提供程序并获得一系列电话作为回报(或者至少是目标):

getRemoteHomephones(auth_token) {
    return new Promise(resolve => {
      this.httpClient.get(this.apiUrl + "remote_homephones", {
        headers:{"X-USER-AUTH-TOKEN": auth_token}
      }).subscribe(response => {
        resolve(response);
      }
    });
  }

我猜问题出在api端的类型声明上,但是我似乎找不到正确的方法来声明它。

非常感谢您的帮助或提示。

1 个答案:

答案 0 :(得分:0)

可以为您现在和将来提供帮助的提示。我不知道此代码是否将在生产中部署,但我们开始:

    当HTTP调用失败时,
  • getRemoteHomephones 也应处理错误情况。 (拒绝承诺,在调用方中捕获错误)
  • Angular喜欢 Typescript ,因此您也应该开始使用它。如果有打字稿错误,该解决方案将无法运行,因此您可以避免很多麻烦。 (特别是在这里,您应该定义一个接口,该接口将在您的API响应上映射为

    getRemoteHomephones(auth_token):电话号码 [])

  • 在将结果作为 result.data 传递给 createOrUpdateHomephones 之前,添加其他验证以确保对象存在和 data 属性可用。

祝你好运!