Angular 角度服务不使用http.get observable

Angular 角度服务不使用http.get observable,angular,http,rxjs,observable,Angular,Http,Rxjs,Observable,我正在尝试使用http.get从服务器检索json文件,并从组件订阅可观察的内容。但是,它返回的是一个错误,而不是数据 你能告诉我哪里出了问题吗: import { Injectable } from '@angular/core'; import { Http } from '@angular/http'; import { Observable } from 'rxjs'; @Injectable() export class MoviesService { constructor(

我正在尝试使用http.get从服务器检索json文件,并从组件订阅可观察的内容。但是,它返回的是一个错误,而不是数据

你能告诉我哪里出了问题吗:

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Observable } from 'rxjs';

@Injectable()
export class MoviesService {

  constructor(private http: Http) {
  }

  getMovies() : Observable<any> {
    let url = API_URL;
    return this.http.get(url);
  }
}
我正在使用Angular和rxjs库的最新版本


请提供帮助。

使用HttpClient而不是
Http
Http
返回类型为
Response
的对象。您必须对其调用
json()
方法,该方法将为您提供所需的数据

要避免这样做,请使用
HttpClient
。要使用
HttpClient
,您必须首先将
HttpClientModule
添加到模块的
imports
数组中

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class MoviesService {

  constructor(private http: HttpClient) {
  }

  getMovies() : Observable<any> {
    let url = API_URL;
    return this.http.get(url);
  }
}
从'@angular/core'导入{Injectable};
从'@angular/common/http'导入{HttpClient};
从“rxjs”导入{Observable};
@可注射()
出口级电影服务{
构造函数(专用http:HttpClient){
}

getMovies():可观察。这是获取电影详细信息的安全且免费的API。您必须首先创建API密钥。您可以这样做。

在我的例子中,我的app.module.ts文件的imports部分既有HttpClientTestingModule,也有HttpClientModule

从app.module.ts中删除HttpClientTestingModule修复了我的问题

角度:11.0.9

包裹 版本 @角度设计/建筑师 0.1100.7 @角度开发套件/构建角度 0.1100.7 @角形devkit/核心 11.0.7 @角度传感器/示意图 11.0.7 @角度/cdk 11.2.5 @角度/客户端 11.0.7 @角/材料 11.2.5 @示意图/角度 11.0.7 @示意图/更新 0.1100.7 rxjs 6.6.6 打字稿 4.0.7
是否在控制台上看到任何错误?打开浏览器中的DEV工具,导航到网络选项卡,单击过滤器,查看XHR部分,查看请求并检查它是否成功响应。如果我的答案没有解决您的问题,请考虑创建StasBLIZE演示,以便有人可以查看它。您可以在这里创建一个:@ SIDDHARTHAJMEra请查看您使用的API不安全的链接。请尝试使用安全API获取电影。我使用的是angular 6。它找不到@angular/common/http。只能从@angular/http导入http。请检查编辑器url:不安全的API调用是问题所在。非常感谢您的帮助。我在GitHub上托管了该API,它工作正常.我被限制在测试中使用相同的API数据。
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class MoviesService {

  constructor(private http: HttpClient) {
  }

  getMovies() : Observable<any> {
    let url = API_URL;
    return this.http.get(url);
  }
}