首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >类型“void”不能赋值给类型“User[]”

类型“void”不能赋值给类型“User[]”
EN

Stack Overflow用户
提问于 2018-07-23 03:31:02
回答 3查看 5.8K关注 0票数 2

我不能理解这个错误,为什么它不允许我将数据发布到用户数组,这样我就可以从html访问它了?

这就是组件

代码语言:javascript
复制
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;
 }
}

这是我想要订阅的服务

代码语言:javascript
复制
export class UserService {

 private _getUrl = '/api/users'

 constructor(private _http: Http) { }

 getUsers(){
   return this._http.get(this._getUrl)
   .map((response: Response) => {
     response.json();
   })
 }
}

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-23 03:39:12

您错过了从您的函数返回,该函数在组件中被视为void

代码语言:javascript
复制
getUsers(){
   return this._http.get(this._getUrl)
   .map((response: Response) => {
    return response.json();   // add return statement
   })
}
票数 3
EN

Stack Overflow用户

发布于 2018-07-23 03:40:57

get answers方法不会返回任何内容,因为map函数不会返回。您甚至不需要映射函数,因为“新的”HttpClient会自动执行此操作。尝尝这个

代码语言:javascript
复制
getUsers() { 
  return this._http.get(this._getUrl);
}
票数 2
EN

Stack Overflow用户

发布于 2018-07-23 03:33:42

您应该在一个块中限定订阅的范围:

代码语言:javascript
复制
.subscribe(resUserData => {
    this.users = resUserData;
});
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51468613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档