Javascript Angular 2至最新版本-jsonp和URLSearchParams至HttpClient和HttpParams

Javascript Angular 2至最新版本-jsonp和URLSearchParams至HttpClient和HttpParams,javascript,angular,typescript,rxjs,angular8,Javascript,Angular,Typescript,Rxjs,Angular8,我正在尝试将其升级到最新版本,但显示数据时出错。我需要从Jsonp重构到HttpClient,并为下面的代码重构HttpParams。任何帮助都会很好 import { Injectable } from '@angular/core'; import {Jsonp, URLSearchParams} from '@angular/http'; import 'rxjs/Rx'; @Injectable() export class MyService { apikey: string

我正在尝试将其升级到最新版本,但显示数据时出错。我需要从Jsonp重构到HttpClient,并为下面的代码重构HttpParams。任何帮助都会很好

import { Injectable } from '@angular/core';
import {Jsonp, URLSearchParams} from '@angular/http';
import 'rxjs/Rx';

@Injectable()
export class MyService {
    apikey: string;

    constructor(private _jsonp: Jsonp) {
        this.apikey = 'my_api_key';
        console.log('it works');
    }

    getData() {
        var search = new URLSearchParams();
        search.set('sort_by','popularity.desc');
        search.set('api_key', this.apikey);
        return this._jsonp.get('url', {search})
          .map(res => {
            return res.json();
          })
    }
}

这应该能够解决您的问题。请查看更多信息

在你的模块中

import { NgModule }         from '@angular/core';
import { BrowserModule }    from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';

@NgModule({
  imports: [
    BrowserModule,
    // import HttpClientModule after BrowserModule.
    HttpClientModule,
  ],
  declarations: [
    AppComponent,
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule {}
为您效劳

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

@Injectable()
export class MyService {
    apikey: string;

    constructor(private http: HttpClient){
        this.apikey = 'my_api_key';
    }

    getData(): Observable<any>  {
        const params = new HttpParams()
            .set('sort_by', popularity.desc)
            .set('api_key', this.apikey);
        return this.http.get('url', {params});
    }
}
从'@angular/core'导入{Injectable};
从'@angular/common/http'导入{HttpClient,HttpParams};
从“rxjs”导入{Observable};
@可注射()
导出类MyService{
apikey:字符串;
构造函数(专用http:HttpClient){
this.apikey='my_api_key';
}
getData():可观察{
const params=新的HttpParams()
.set('sort_by',popularity.desc)
.set('api_key',this.apikey);
返回这个.http.get('url',{params});
}
}

@Tony非常感谢您,我错过了可观察的导入和使用。现在开始工作了。谢谢。