首页 > 解决方案 > TS2334 属性“长度”在“对象”类型上不存在。仅在应用启动时(ng-serve)

问题描述

当我启动我的角度应用程序时遇到问题。

我有一个执行发布请求的函数,将一些数据返回到我的组件并绘制图表。在我启动应用程序进行一些随机修改并保存后它工作正常,但是当我第一次启动应用程序时,我进入Property 'length' does not exist on type 'Object'. 了一个 for 循环,我的响应数组中有一个。

我已经尝试遍历响应,但前提是它不为空,但这不起作用。

功能:

dailyForecast() {
  var token = {token : "0a1b2c3d"};
  return this._http.post("https://www.improving.com.br/api/test/hits-by-browser", token)
  .map(result => result);
}

我在这个 for 循环中得到了错误,但在我重新编译后它工作正常。

ngOnInit() {
  let chart = < any > {};
  this._weather.dailyForecast()
    .subscribe(res => {
      console.log(res);
      let browsers = [];
      let browsersAcesss = [];
      if (res !== null) {
        for (var i = 0; i < res.length; i++) {
          browsers.push(res[i][0]);
          browsersAcesss.push(res[i][1]);
        }
      }
    });
}

标签: javascriptangulartypescriptangular-cli

解决方案


如果要避免编译错误,可以将响应类型设置any[]为自定义接口。

ngOnInit() {
  let chart = < any > {};
  this._weather.dailyForecast()
    .subscribe((res: any[]) => {
      console.log(res);
      let browsers = [];
      let browsersAcesss = [];
      if (res !== null) {
        for (var i = 0; i < res.length; i++) {
          browsers.push(res[i][0]);
          browsersAcesss.push(res[i][1]);
        }
      }
    });
}

推荐阅读