Angular http post 方法给出打字稿错误

Angular http post method gives typescript error

我正在使用 Angular 5. 我通过服务与 API 交互。我有一个方法想用于 posting 到 API。问题是,如果我将 post 方法的类型指定给 "Candidate" 对象,我会收到以下警告:

src/app/candidates.service.ts(17,12): error TS2558: Expected 0 type arguments, but got 1.

我的函数代码如下:

  addCandidate(candidate: Candidate): Observable<Candidate> {
return this.http.post<Candidate>(this.apiUrl, candidate, httpOptions);} 

我想我在这里使用的类型不正确,但我不确定。

http post 方法 return 是候选人吗?如果不只是更改为 Observable 而不是 Observable<Candidate>

我建议删除 <Candidate>,因为在 post 方法中,它只关心您向它发送 json 数据。您也已经在 addCandidate(candidate: Candidate) 方法参数声明中输入了它。

这可能是因为您使用的是旧的、已弃用的 Http class 而不是 HttpClient

import {Http} from '@angular/http'; //old, deprecated client. Does not support generic types
import {HttpClient} from '@angular/common/http'; //new client

在您服务的构造函数中将 private http: Http 替换为 private http: HttpClient,并像这样导入 HttpClient

import {HttpClient} from '@angular/common/http`

不要忘记在 AppModule 模块中导入 HttpClientModule

//app.module.ts
import { HttpClientModule } from '@angular/common/http';

....
imports: [HttpClientModule]