首页 > 解决方案 > 尝试传递请求选项时出错

问题描述

我有这样的服务:

   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。

我究竟做错了什么?

标签: angular

解决方案


如果你使用 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);
}

推荐阅读