我正在尝试使用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);
}
}
下面是组件:
import { Component } from '@angular/core';
import { MoviesService } from './movies.service';
@Component({
selector: 'movies',
templateUrl: './movies.component.html',
styleUrls: ['./movies.component.css'],
providers: [
MoviesService
]
})
export class MoviesComponent {
constructor(private moviesService: MoviesService) {};
ngOnInit() {
this.moviesService.getMovies().subscribe(
(data: any) => {
console.log("Success " + data);
},
(err) => {
console.log("Error: " + JSON.stringify(err));
}
);
}
}
我正在使用Angular和rxjs库的最新版本。
请帮忙。
在我的例子中,我的app.module.ts文件的imports部分既有HttpClientTestingModule,也有HttpClientModule。
从app.module.ts中删除HttpClientTestingModule修复了我的问题。
角度: 11.0.9
使用HttpClient而不是Http
Http
返回类型为Response
的对象。您必须对其调用json()
方法,该方法将为您提供所需的数据。
要避免这样做,请使用HttpClient
。要使用HttpClient
,您必须首先将HttpClientMoules
添加到模块的导入
数组中。
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);
}
}
您的API不安全。这就是客户端阻止它并给出混合内容错误的原因。当一些内容通过HTTPS提供,而一些内容通过HTTP提供时,通常会发生这种情况。我真的不认为有办法在不改变应用编程接口的情况下解决这个问题。
你应该考虑使用一个安全的API来制作电影。
可以使用OMDb API。这是一个安全和免费的API来获取电影细节。您必须先创建一个API Key。你可以在这里做。
我有一个实现CanActivate的AuthGuard(用于路由)。 我的问题是,CanActivate结果依赖于超文本传输协议-get结果-登录服务返回一个可观察的。 我如何将它们结合在一起-使CanActivate依赖于后端状态? 编辑:请注意,这个问题是从2016年开始的-已经使用了角度/路由器的一个非常早期的阶段。
问题内容: 我已经看到angular.factory()和angular.service()都用于声明服务;但是,我在官方文档中找不到 任何地方。 两种方法有什么区别? 应该使用哪个(假设他们做不同的事情)? 问题答案: 直到我以这种方式对自己说: 服务 :您编写的 函数 将是 新的 -ed: Factory* :将 调用 您编写的 函数 (构造函数): * 您可以根据自己的意愿进行操作,但是有一
我正在为youtube api实现OAuth 2… 公共静态凭据authorize(列表范围,字符串credentialDatastore)引发IOException { } 它在本地工作。从逻辑上讲,我将回调URL更改为http://localhost:8081/CallBack..在本地工作正常,但当我使用公共IP部署到AWS服务器时,它不起作用。 显示地址已被用于8081异常,甚至没有重定向
我试图将zookeeper和kafka设置为共享名称空间中单独的Kubernetes部署/吊舱。我已经在我的Ubuntu沙盒上通过kubeadm用Calico引导了一个本地K8s 1.8... 所以我假设我的集群中有一个普通的网络问题,然后我注意到一些更让我困惑的事情...如果我将zookeeper.connect设置为10.107.41.148:2181(zookeeper服务的当前地址),连接
问题内容: 我正在开发angularjs应用程序作为我的angularjs学习的一部分。我有控制器,从那里我叫服务层。 }); 我注意到由于$ http.get.then东西的异步特性,不会立即检索数据,因此当我从控制器(teamsController)调用getTeams()时,我不会得到“ teams”,我会得到没有。 知道我该如何解决吗? 第二次尝试: 在阅读了有关以下文章所建议的关于角度的
问题内容: 我是一个有角的新手,正在构建一个应用程序,让我感到困惑的是,有几种方法定义了服务,我从此链接中了解了更多:如何定义服务, 然后似乎没有太大的区别定义服务的方式。 但我只是注意到我认为是不同的一个不同之处: 看到我从这里得到的这项服务http://jsfiddle.net/2by3X/5/ 如果我使用如下所示的“工厂”定义此服务,则一个功能不能调用该服务的其他功能。 我将在浏览器控制台中