angular - 在 Angular 7 http.get 方法中使用 httpOptions 更改结果类型
问题描述
我对 Angular 有点陌生。我只想从 API 加载一些产品,然后创建我的类的实例(不仅仅是对我的类“成形”的对象)。所以我的 Product 类上有一个构造函数,它将复制传入的值。
这是我在服务类中的方法,效果很好。
getProductList(): Observable<Product[]> {
return this.http
.get<Product[]>(this.productListUrl)
.pipe(
map(data => data.map(item => new Product(item))),
catchError(this.handleError));
}
但是,我还想在 GET 请求标头中传递一个令牌以进行身份验证。所以我在 get 方法调用中添加了一个 httpOptions 对象(在 httpOptions 中设置了授权键/值):
@Injectable()
export class ProductService {
// http options used for making API calls
private httpOptions: any;
private apiURL = environment.apiURL;
private productListUrl = this.apiURL + '/api/v1/products/';
constructor(private http: HttpClient) {
this.httpOptions = {
headers: new HttpHeaders({'Content-Type': 'application/json'}),
observe: 'events'
};
}
getProductList(): Observable<Product[]> {
return this.http
.get<Product[]>(this.productListUrl, this.httpOptions)
.pipe(
map(data => data.map(item => new Product(item))),
catchError(this.handleError));
}
private handleError(res: HttpErrorResponse | any) {
console.error(res.error || res.body.error);
return observableThrowError(res.error || 'Server error');
}
}
但是不知何故,将 httpOptions 参数添加到 get 方法会导致返回类型发生变化,并且编译现在会抱怨Property 'map' does not exist on type 'HttpEvent<Product[]>'.
并且不会编译。
关于我是否做错了,或者我将如何改变我使用地图的方式的任何想法?谢谢!
解决方案
推荐阅读
- python - 如何通过 GMAIL-API for python 发送多部分 HTML 和 PLAIN 格式的电子邮件
- codenameone - 等到变量更改其值的最佳方法
- javascript - 如何在动作链接中嵌入表单数据?
- ios - init(来自解码器:解码器)在单独的便利初始化中导致“无法推断上下文基础”错误
- php - 使用 where 子句的 Laravel 表单验证
- java - 谁能解释一下热确定字符串是否具有所有唯一字符而没有任何其他数据结构?
- javascript - 从 Django 视图中获取 HttpResponse 时,Ajax Get 请求不起作用
- mysql - 有没有办法在存储过程中传递一个默认整数?
- c# - C#:如何使用字符串变量的内容来调用同名的方法?
- sql - 我是否正确构建了这个多重 JOIN?