“void”类型上不存在属性“map”。在角度

Posted

技术标签:

【中文标题】“void”类型上不存在属性“map”。在角度【英文标题】:Property 'map' does not exist on type 'void'. in angular 【发布时间】:2018-09-01 22:29:31 【问题描述】:

我开发了一个 Angular 5 和 Ionic 3 应用程序。我使用以下教程。

https://www.techiediaries.com/ionic-3-http-module-rxjs/

但是,我得到以下错误

错误是:“void”类型上不存在属性“map”。

我的代码(文件:remote-service.ts)

import  HttpClient  from '@angular/common/http';
import  Injectable  from '@angular/core';

import Http ,Response  from '@angular/http';
import 'rxjs/add/operator/do';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

/*
  Generated class for the RemoteServiceProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/
@Injectable()
export class RemoteService 

getApiUrl : string = "https://jsonplaceholder.typicode.com/posts";

  constructor(public http: HttpClient) 
    console.log('Hello RemoteServiceProvider Provider');
  

  getPosts() 

    return  this.http.get(this.getApiUrl)
            .do((res : Response ) => console.log(res.json())
            .map((res : Response ) => res.json())  // <-- error shows here
            .catch(error => console.log(error)));




【问题讨论】:

【参考方案1】:

你少了一个)

.do((res : Response ) => console.log(res.json()))

最后,要从 httpClient 读取完整响应,必须明确观察:

https://angular.io/guide/http#reading-the-full-response

【讨论】:

httpClient 不会自动响应响应。它将反序列化响应。所以你只是得到一个对象。要获得完整的响应,您必须观察它: observe: 'response' angular.io/guide/http#reading-the-full-response【参考方案2】:

再次检查您是否从 Angular 而不是 Selenium 导入了 HttpClient 模块。 这样做。

import  HttpClient  from '@angular/common/http';

【讨论】:

以上是关于“void”类型上不存在属性“map”。在角度的主要内容,如果未能解决你的问题,请参考以下文章

类型 ' $route(currentRoute: any): void; 上不存在属性' 在 Ionic Vue 中

“元素”类型上不存在角度属性“偏移宽度”

角度:错误 TS2339:“对象”类型上不存在属性“数据”

从服务订阅数据时,类型 void 上不存在错误属性订阅?

类型“Promise<void>”上不存在属性“catch”

为啥我会收到此错误? 'Observable<boolean>' 类型上不存在属性 'map'