我无法理解此错误, 为什么不允许我将数据发布到用户数组,以便我可以从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();
})
}
}
答案 0 :(得分:1)
只需初始化用户
users : User[] = [];
编辑
在编辑完您的问题后,我发现您错过了返回服务的答复
return this._http.get(this._getUrl)
.map((response: Response) => {
return response.json();
})
答案 1 :(得分:1)
您错过了从函数中返回的功能,该函数在您的组件中被视为void
。
getUsers(){
return this._http.get(this._getUrl)
.map((response: Response) => {
return response.json(); // add return statement
})
}
答案 2 :(得分:1)
您的get answers方法不会返回任何内容,因为map函数不会返回。您甚至不需要map函数,因为'new'HttpClient
是自动完成的。试试这个
getUsers() {
return this._http.get(this._getUrl);
}
答案 3 :(得分:0)
如果箭头函数返回单个值,则无需使用return
语句
getUsers(){
return this._http.get(this._getUrl)
.map((response: Response) => response.json())
}
如果使用HttpClient,则不需要
.map((response: Response) => response.json())
,它会在内部自动调用response.json()。
答案 4 :(得分:-3)
您应该将订阅的范围划分为一个块:
.subscribe(resUserData => {
this.users = resUserData;
});