- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在使用 HttpClient 时遇到有关返回类型的编译错误。在我的函数中 GetPortfolio
, 我期待 GET
调用返回 Observable<Portfolio>
类型的 json 对象但它给出了错误:
输入 Observable<HttpEvent<Portfolio>>
不可分配给类型 Observable<Portfolio>
.输入 HttpEvent<Portfolio>
不可分配给类型 Portfolio
.输入 HttpProgressEvent
不可分配给类型 Portfolio
.属性(property)name
缺少类型 HttpProgressEvent
.
我的代码:
import { Injectable } from '@angular/core';
import { environment } from './environments/environment';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
export interface Portfolio {
name: string;
id: string;
}
@Injectable()
export class PortfolioService {
private httpOptions;
apiUrl: string;
constructor(private http: HttpClient) {
this.apiUrl = environment.apiUrl + "/api/portfolios";
this.httpOptions = {
headers: new HttpHeaders(
{
'Content-Type': 'application/json',
})
};
}
GetPortfolio(portfolioId: string): Observable<Portfolio> {
return this.http.get<Portfolio>(this.apiUrl + '/${portfolioId}', this.httpOptions);
}
}
来自 angular hero 教程和文档 HttpClient 请求应该期待 Observable<any>
: Angular HttpClient doc
那我是不是做错了什么?或者我应该将返回值设置为 Observable<HttpEvent<Portfolio>>
?
最佳答案
强制转换您的 httpOptions
private httpOptions: {
headers: HttpHeaders
};
typescript 编译器提取了错误的 get
方法类型 ( src )
/**
* Construct a GET request which interprets the body as JSON and returns the full event stream.
*
* @return an `Observable` of all `HttpEvent`s for the request, with a body type of `T`.
*/
get<T>(url: string, options: {
headers?: HttpHeaders | {[header: string]: string | string[]},
observe: 'events',
params?: HttpParams|{[param: string]: string | string[]},
reportProgress?: boolean,
responseType?: 'json',
withCredentials?: boolean,
}): Observable<HttpEvent<T>>;
当您指定带有标题的类型时,它会提取正确的类型。 ( src )
/**
* Construct a GET request which interprets the body as JSON and returns it.
*
* @return an `Observable` of the body as type `T`.
*/
get<T>(url: string, options?: {
headers?: HttpHeaders | {[header: string]: string | string[]},
observe?: 'body',
params?: HttpParams|{[param: string]: string | string[]},
reportProgress?: boolean,
responseType?: 'json',
withCredentials?: boolean,
}): Observable<T>;
关于Angular HttpClient 返回期望 observable<HttpEvent<any> 而不是 observable<any>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48401250/
我正在通过调用类 AuthService 的这个方法来执行获取请求: return this.http.post('url',{ "username": username, "pas
从 Angular 5 到 6(使用 Angular 6 和 rxjs 6),在我的 linter 中出现以下两个错误。请任何人有任何想法,谢谢。 [ts] 'catchError' is decla
我有这样的设置 api.service(包装 httpClient 模块) 客户服务 api 服务看起来像这样: get(url: string, options?) { return this.ht
我在使用 HttpClient 时遇到有关返回类型的编译错误。在我的函数中 GetPortfolio , 我期待 GET调用返回 Observable 类型的 json 对象但它给出了错误: 输入 O
我有这个代码片段: SubmitTransaction(transNumber: string, transactionRequest: ITransactionRequestObj): Observ
我想将我的 angular 4 迁移到 angular 5。我完成了从 angular 4 到 angular 5 的迁移,现在我的拦截器出现错误以刷新我的 token 。如果出现 401 错误,我将
我只是从文章中复制了此代码 import { Injectable } from "@angular/core"; import { HttpEvent, HttpInterceptor,
我使用的是 angular-5.x,一旦升级到 angular-6.x 及其对等依赖项(zone、rxjs 等)。 我开始面临以下错误 ERROR in src/app/xxx/apiConnecti
问题出在第 14 行 Type 'Observable>' is not assignable to type 'Observable'. Type 'HttpEvent' is not assi
我有一个场景,我正在写一篇文章,它也给了我一个 json 对象。 仅在帖子中使用 URL 和正文时,返回类型为 Observable 但是当它也使用 params 时,返回类型变为 Observabl
我是一名优秀的程序员,十分优秀!