Angular4打字稿; 'any []'类型中不存在属性'数据'

时间:2017-07-20 19:33:40

标签: javascript angular typescript

我正在使用TypeScript在Angular 4上构建应用程序。我不知道为什么会收到错误

  

Property 'data' does not exist on type 'any[]'

表示这样的表达式。我把它从一个组件中取出来了;

LoadAllUsers(): void {
    this.AllUsers.Loading = true;
    let AdditionalParams = {
      'page': this.AllUsers.CurrentPage
    };
    this.UserService.All(AdditionalParams)
        .subscribe(
            (users) => {
              this.AllUsers.Users = users.data;
              this.AllUsers.Data = users;
              this.AllUsers.Loading = false;
              this.AllUsers.Loaded = true;
              console.log ("Users response: ", this.AllUsers, this.AllUsers.Users);
            },
            (error)=>  {
              this.AllUsers.Loading = false;
              console.log ("THE ERROR: ", error);
              this.AllUsers.RequestStatus = error.status=0;
              if (typeof error.json == 'function' && error.status!=0) {
                let errorObject = error.json();
                this.AllUsers.RequestError = errorObject;
              } else {
                this.AllUsers.RequestError = "net::ERR_CONNECTION_REFUSED";
              }
              this.AllUsers.HasRequestError = true;
            });
  }

我只能通过使用绕过这个错误; (users) => this.PrepareUsers(users)

我必须遗漏一些关于TypeScript的东西。奇怪的是我可以使用error.status

2 个答案:

答案 0 :(得分:2)

我猜你应该将服务中的方法签名更改为All(AdditionalParams: any): Observable<User[]>,当然,如果你有一个User模型。 此外,变量和方法应以小写字母开头。

答案 1 :(得分:0)

(users)参数中从您的服务返回的数据是一个数组。所有数组都具有相同的属性和方法。 .data不是数组的属性或方法。

您可以在数组类型here

上找到所有属性和方法

可以帮助您调试特定问题的一些方法是将(users)记录到控制台,看看数据是什么样的:

LoadAllUsers(): void {
    this.UserService.All(AdditionalParams)
        .subscribe(
            (users) => {
              console.log(users);
            });
  }

您的数据可能不会以您期望的形式回复给您。