类型 'void' 不可分配给类型 'User[]'
Type 'void' is not assignable to type 'User[]'
我无法理解这个错误,
为什么它不允许我将 post 数据发送到用户数组,以便我可以从 html 访问它?
这是组件
export class Service1Component implements OnInit {
selectedUser: User;
users: Array<User>;
constructor(private _userService: UserService) { }
ngOnInit() {
this._userService.getUsers()
.subscribe(resUserData => {
this.users = resUserData
});
}
onSelectUser(user:any){
this.selectedUser = user;
}
}
这是我要订阅的服务
export class UserService {
private _getUrl = '/api/users'
constructor(private _http: Http) { }
getUsers(){
return this._http.get(this._getUrl)
.map((response: Response) => {
response.json();
})
}
}
只需初始化您的用户
users : User[] = [];
编辑
编辑您的问题后,我发现您错过了return您服务中的回复
return this._http.get(this._getUrl)
.map((response: Response) => {
return response.json();
})
您应该将订阅范围限定在一个块中:
.subscribe(resUserData => {
this.users = resUserData;
});
您从您的函数中错过了 return,该函数在您的组件中被视为 void
。
getUsers(){
return this._http.get(this._getUrl)
.map((response: Response) => {
return response.json(); // add return statement
})
}
您的获取答案方法没有 returning 任何东西,因为您的地图函数没有 return。您甚至不需要 map 函数,因为 'new' HttpClient
会自动执行此操作。试试这个
getUsers() {
return this._http.get(this._getUrl);
}
如果箭头函数return单值你不需要使用return
语句
getUsers(){
return this._http.get(this._getUrl)
.map((response: Response) => response.json())
}
If you use HttpClient you don't need to .map((response: Response) => response.json())
it's automatically calls response.json() internally.
我无法理解这个错误, 为什么它不允许我将 post 数据发送到用户数组,以便我可以从 html 访问它?
这是组件
export class Service1Component implements OnInit {
selectedUser: User;
users: Array<User>;
constructor(private _userService: UserService) { }
ngOnInit() {
this._userService.getUsers()
.subscribe(resUserData => {
this.users = resUserData
});
}
onSelectUser(user:any){
this.selectedUser = user;
}
}
这是我要订阅的服务
export class UserService {
private _getUrl = '/api/users'
constructor(private _http: Http) { }
getUsers(){
return this._http.get(this._getUrl)
.map((response: Response) => {
response.json();
})
}
}
只需初始化您的用户
users : User[] = [];
编辑
编辑您的问题后,我发现您错过了return您服务中的回复
return this._http.get(this._getUrl)
.map((response: Response) => {
return response.json();
})
您应该将订阅范围限定在一个块中:
.subscribe(resUserData => {
this.users = resUserData;
});
您从您的函数中错过了 return,该函数在您的组件中被视为 void
。
getUsers(){
return this._http.get(this._getUrl)
.map((response: Response) => {
return response.json(); // add return statement
})
}
您的获取答案方法没有 returning 任何东西,因为您的地图函数没有 return。您甚至不需要 map 函数,因为 'new' HttpClient
会自动执行此操作。试试这个
getUsers() {
return this._http.get(this._getUrl);
}
如果箭头函数return单值你不需要使用return
语句
getUsers(){
return this._http.get(this._getUrl)
.map((response: Response) => response.json())
}
If you use HttpClient you don't need to
.map((response: Response) => response.json())
it's automatically calls response.json() internally.