You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 6中get请求调用时subscribe报错及类型不匹配问题求助

解决Angular 6中subscribe不存在和类型不匹配的问题

我来帮你一步步搞定这两个报错:

第一个错误:subscribe does not exist on type void

这个问题的核心很简单——你的服务方法getUsers()根本没返回任何值(默认返回void),但你在组件里却想调用它的subscribe方法,可只有Observable类型才有这个方法呀!

看你原来的服务代码,this._http.get(...).pipe(...)其实是一个Observable,但你没把它return出去,导致方法默认返回void,自然找不到subscribe。

另外补充个Angular 6的小知识点:它默认用HttpClient替代了旧的Http,HttpClient的get方法会自动帮你解析JSON响应,所以你完全不用手动写response.json()这一步啦。

修改后的服务代码应该是这样的(记得提前导入Observable和你的User类型):

import { Observable } from 'rxjs';
// 导入你的User类型,比如 import { User } from './user.model';

getUsers(): Observable<User[]> { 
  // 直接return HttpClient的请求,同时指定响应类型为User[]
  return this._http.get<User[]>(this.baseUrl + "/users", this.options);
}

如果你还在坚持用旧的Http模块(不太推荐),那得保留map操作,但同样要记得return:

getUsers(): Observable<User[]> { 
  return this._http.get(this.baseUrl + "/users", this.options)
    .pipe(map((response: Response) => response.json() as User[]));
}

第二个错误:void is not assignable to User[]

这个报错是因为你之前的服务方法返回void,但组件期望它返回一个能订阅的Observable<User[]>。只要按照上面的方法修改服务代码,让它正确返回Observable<User[]>,这个错误就会自动消失。

你的组件代码本身是没问题的,修改服务后就能正常运行:

private users: User[];

getUsers() { 
  this._userService.getUsers().subscribe((users) => { 
    console.log(users); 
    this.users = users; 
  }); 
}

内容的提问来源于stack exchange,提问作者user9729328

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:56:23