在angular 4服务中。映射功能不起作用
我是angular 7的初学者。我正在使用angular 7创建一些应用程序。在服务中,我导入了地图,但它不起作用。我如何解决它?这是服务文件的代码在angular 4服务中。映射功能不起作用,angular,angular7,Angular,Angular7,我是angular 7的初学者。我正在使用angular 7创建一些应用程序。在服务中,我导入了地图,但它不起作用。我如何解决它?这是服务文件的代码 import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { Http } from '@angular/http'; import { map } from 'rxjs/operators'; @Injectable() expo
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { Http } from '@angular/http';
import { map } from 'rxjs/operators';
@Injectable()
export class DataService {
users: string[];
data: Observable<Array<number>>;
constructor(public http: Http) {
this.users = ['supun' , 'madhushi' , 'kennady' , 'sachini'];
}
getUsers() {
return this.users;
}
getUsers1() {
return this.http.get('http://jsonplaceholder.typicode.com/users')
.map(res => res.json());
}
getData() {
this.data = new Observable(observer => {
setTimeout(() => {
observer.next(1);
}, 1000);
setTimeout(() => {
observer.next(2);
}, 2000);
setTimeout(() => {
observer.next(3);
}, 3000);
setTimeout(() => {
observer.next('hello');
}, 4000);
setTimeout(() => {
observer.complete();
}, 5000);
});
return this.data;
}
}
从'@angular/core'导入{Injectable};
从“rxjs”导入{Observable};
从'@angular/Http'导入{Http};
从“rxjs/operators”导入{map};
@可注射()
导出类数据服务{
用户:字符串[];
数据:可观察;
构造函数(公共http:http){
this.users=['supun'、'madhushi'、'kennady'、'sachini'];
}
getUsers(){
将此文件返回给用户;
}
getUsers1(){
返回此.http.get('http://jsonplaceholder.typicode.com/users')
.map(res=>res.json());
}
getData(){
this.data=新的可观察对象(观察者=>{
设置超时(()=>{
观察员:下一(1);
}, 1000);
设置超时(()=>{
观察员:下一个(2);
}, 2000);
设置超时(()=>{
观察员:下一个(3);
}, 3000);
设置超时(()=>{
observer.next('hello');
}, 4000);
设置超时(()=>{
observer.complete();
}, 5000);
});
返回此.data;
}
}
错误是.http.get(…).map不是一个函数您需要查看管道,因为您使用的是RxJS最新版本
return this.http.get('http://jsonplaceholder.typicode.com/users')
.pipe(
map(res => res.json())
);
this.http.get
将返回一个可观察的。您不能将映射到可观察对象。您需要.subscribe
到可观察对象,将结果转换为JSON,然后在其上执行.map
例如:
this.http.get('url').subscribe(res=>res.json()).map(x=>{
//用x做点什么
});代码>您使用的是什么版本的angular?http已弃用,您应该改用HttpClientModule和HttpClient。您使用弃用的http服务将Angular的过时版本与RxJS的较新版本混合,同时仍使用较旧的RxJS语法。帮你自己一个忙,通过阅读最新稳定Angular版本的文档,并使用文档化的HttpClient重新启动。@FRECIA这些是json包中的版本“@Angular/animations”:“~7.0.0”、“@Angular/common”:“~7.0.0”、“@Angular/compiler”:“~7.0.0”、“@Angular/core”:“~7.0.0”,“@angular/forms:”~7.0.0“,“@angular/http:”~7.0.0“,“@angular/platform browser:”~7.0.0“,“@angular/router:”~7.0.0“,“@angular/http:”~7.0.0“,“@angular/platform browser:”~7.0.0”,“core js:“^2.5.4”,“rxjs:”~6.3.3.3”,“zone.js:”~0.8.26“@JBNizet谢谢我会阅读文档。您可以使用HttpClientModule而不是HttpModule。您没有使用角度4,但它是角度7.:)现在它的工作。非常感谢。你能告诉我管道的用途吗?在Rxjs 5.5之前,每个操作符和可观察的函数都被分配给原型,这将增加束的大小。作为Rxjs 5.5的一部分,他们通过引入管道操作符编写了一个完整的Rxjs重写,管道操作符将接受observable作为输入,发出observable作为输出。它还允许链接数据库,以便为您提供信息。我只是个新手。