在angular 4服务中。映射功能不起作用

在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

我是angular 7的初学者。我正在使用angular 7创建一些应用程序。在服务中,我导入了地图,但它不起作用。我如何解决它?这是服务文件的代码

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作为输出。它还允许链接数据库,以便为您提供信息。我只是个新手。