Angular中TS2769错误:HttpHeaders无法赋值给post请求options参数
解决Angular HttpClient.post的TS2769类型不匹配错误
错误原因
你直接将HttpHeaders实例赋值给了httpOptions,但HttpClient.post方法的第三个参数要求传入包含headers等属性的请求配置对象,而非直接传入HttpHeaders实例,TypeScript因此抛出类型不匹配错误。
修复步骤
- 把
HttpHeaders实例包装到一个带headers属性的对象中,作为httpOptions的值 - (可选但推荐)给
httpOptions添加类型注解,明确其结构
修改后的完整代码
import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http'; import { Observable, of } from 'rxjs'; import { catchError, tap } from 'rxjs/operators'; import { throwError } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class DashboardService { // 明确httpOptions的类型结构 private httpOptions: { headers: HttpHeaders }; url= 'http://127.0.0.1:8000/dashboard/'; constructor(private http: HttpClient) { const token = localStorage.getItem('token'); const headers = new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization' : `JWT ${token}` }); // 将headers包装为配置对象 this.httpOptions = { headers: headers }; } unique_contacts_reached(Date: any){ return this.http.post(this.url + 'unique-contacts-reached/', Date, this.httpOptions) } }
核心修改点
- 构造函数内:用
this.httpOptions = { headers: headers };替换原有的this.httpOptions = headers; - 给
httpOptions添加类型注解:private httpOptions: { headers: HttpHeaders };
修改后httpOptions将符合HttpClient.post要求的配置对象类型,类型错误即可消除。
内容的提问来源于stack exchange,提问作者Fenil Patel
相关产品推荐
相关产品推荐

