我正在使用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
答案 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);
});
}
您的数据可能不会以您期望的形式回复给您。