首页 > 解决方案 > Ionic 3 - 类型“{}”上不存在属性“数据” - 尝试在设备上运行时

问题描述

尝试在 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 端的类型声明上,但我似乎没有找到正确的方法来声明它。

非常感谢任何帮助或提示。

标签: angularionic-framework

解决方案


现在和将来对您有帮助的提示。如果此代码将在生产中部署,我没有详细信息,但我们开始吧:

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

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

  • 在将结果作为result.data传递给createOrUpdateHomephones之前,添加额外的验证以确保对象存在并且数据属性可用。

祝你好运!


推荐阅读