Angular 5从http请求获取正确的Observable类型(为什么总是Observable <Object>?)

斯蒂芬·阿格乌(Stephen Agwu)

我在从http.get请求中获取正确的可观察类型时遇到了一些麻烦。这是我遇到问题的功能:

getMovie(title:string, year:number): Observable<Movie> {
    const params = new HttpParams()
        .set('title', title)
        .set('year', year.toString());
    return this.http.get(this.moviePath, {params})
  }

如您所见,我想Movie使用参数'title'来从后端api接收并观察该类'year'问题是响应总是返回类型Observable<Object>而不是类型Observable<Movie>

我知道我可以创建一个新的Movie实例,为其提供从列表中接收的属性。问题在于我的电影类具有可选的属性。这是我的电影课:

export class Movie {
  title:string;
  year?:number;
  imdb?:string;
  trailer?:string;
  reviewClip?:string;
  reviewSummary?:string;
  reviewScore:number;
  createdAt?:Date;
  bestWeek:boolean;
  bestMonth:boolean;
}

有谁知道一种简单的方法来使响应成为类型Observable<Movie>而不是Observable<Object>

纳沃内尔·塔卢克达尔

也许您可以尝试从json响应中进行类型转换。

一个例子

public getEmployees(): Observable<IEmployee[]> {  
        return this.http.get(this._repositoryURL)  
            .map((response: Response) =>

   { return <IEmployee[]>response.json() })  
            .catch(this.handleError);  
 }  

您的密码

getMovie(title:string, year:number): Observable<Movie> {
    const params = new HttpParams()
        .set('title', title)
        .set('year', year.toString());
    return this.http.get(this.moviePath, {params}).map((response: Response) => { return <Movie>response.json() })  
                .catch(this.handleError);
 }

 private handleError(errorResponse: Response) {  
        console.log(errorResponse.statusText);  
        return Observable.throw(errorResponse.json().error || "Server error");  
 } 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Angular 5 http请求中使用observable有什么好处?

angular 4 observable 返回 [object Object]

Angular + Firebase:将Observable <Object []>分配给MatTableDataSouce <Object>

使用panelbar Angular时获取[Object object]

为什么在 Angular 中使用 Observable over HTTP

Angular 路由保护/解析器 - 类型 'Observable<boolean | object[]>' 不可分配给类型 'Observable<boolean>'

在Angular 2中映射http响应时获取[object Object]

Angular2处理Observable <Array <Object >>

为什么Angular将Observable用于HttpClient?

为什么需要在Component中编写Object = Object才能在Angular中获取Object.keys?

Angular 5 / Typescript/RxJS - 从 Observable 获取数据

从 Angular4 中的 [object object] 获取值

Angular 试图列出数据但只是获取 [Object.Object]

使用 *ngFor Angular 在模板中获取 [Object Object]

异步管道在 Angular 6 中获取 [object Object]

如何使用 Angular 中的 observable 获取 API http 请求的所有页面中的数据?

Angular 5中带有Observable.ForkJoin的重复Http请求

Angular Http Get 请求返回 Array(2)[Object, Object] 但未定义

为什么父组件能够从 Angular 服务中获取 Observable 类型的数据,而父组件却无法将数据传递给子组件?

获取 Observable<Object[]> 的子数据

Angular bootstrap 搜索错误找不到类型为“object”的不同支持对象“[object Object]”

错误:找不到类型为'object-Angular 7的其他支持对象'[object Object]'

Angular 12:找不到类型为“object”的不同支持对象“[object Object]”

如何从 Angular 应用程序中的 http 客户端获取嵌套的 [object Object] 数据?

为什么在Angular中出现此错误:“找不到其他支持对象'[object Object]'...”?

Angular HTTP获取请求什么都不做

解析[object Object] Angular 6

Angular 5:'找不到'object'类型的不同支持对象'[object Object]'。NgFor 仅支持绑定到 Iterables,例如 Arrays'

使用 Angular observable 和 http