angular - 尝试传递请求选项时出错
问题描述
我有这样的服务:
import { Injectable } from "@angular/core";
import { Http, Response, Headers, RequestOptions } from "@angular/http";
import "rxjs/add/operator/map";
import { Usuario } from "../_models/usuarios";
import { HttpClient } from "@angular/common/http";
import { Observable } from "rxjs/Observable";
import { User } from "../_models/user.model";
private serviceUrl = "apiUrl";
headers = new Headers({
Authorization:
"Bearer " + JSON.parse(localStorage.getItem("currentUser")).token,
"Content-Type": "application/json"
});
options = new RequestOptions({ headers: this.headers });
constructor(private http: Http, private httpClient: HttpClient) {}
getUser(): Observable<User[]> {
return this.httpClient.get<User[]>(this.serviceUrl);
}
问题是当我尝试发送选项来获取方法时:
getUser(): Observable<User[]> {
return this.httpClient.get<User[]>(this.serviceUrl, this.options);
}
它返回:
消息:'RequestOptions 类型的参数不可分配给'{ headers 类型的参数?:HttpHeaders | { [标题:字符串]:字符串 | 细绳[]; }; 观察?:“身体”;参数?:Ht...'。属性“标题”的类型不兼容。类型 'Headers' 不可分配给类型 'HttpHeaders | { [标题:字符串]:字符串 | 细绳[]; }'。类型 'Headers' 不可分配给类型 '{ [header: string]: string | 细绳[]; }'。“标头”类型中缺少索引签名。
我尝试使用 http 而不是 httpClient 来更改它,例如:
return this.http.get<User[]>(this.serviceUrl, this.options);
但现在我明白了
消息:'预期 0 类型参数,但得到 1。
我究竟做错了什么?
解决方案
如果你使用 httpClient,你应该
import { HttpHeaders } from '@angular/common/http';
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': "Bearer " + JSON.parse(localStorage.getItem("currentUser")).token
})
}
...
getUser(): Observable<User[]> {
return this.httpClient.get<User[]>(this.serviceUrl,httpOptions);
}
推荐阅读
- c# - 如何在启动事件中在 WPF 中设置 CultureInfo?
- vba - 复制和粘贴特定列时的for循环
- performance - JMeter json 路径在响应中断言 json 或数组
- python - 在 VS Code 中标记 Python 中未使用的模块,就像在 PyCharm 中一样
- java - 我们如何将网页表单 html 模板与用户输入的数据一起存储在任何服务器中?
- python - 如何使用 discord.py 检查用户是否在角色列表中具有角色?
- python - 使用 tensorflow.train.SequenceExample 保存可变二维数据
- typescript - 在 Stenciljs 中每分钟调用一次函数
- mysql - MySQL Group by 使用来自分组数据的命名列
- c - 时间复杂度嵌套循环内循环+外循环