在所有这些突破性变化之后,角度2中的JSONP请求可以通过以下方式进行。
>在应用模块的定义文件中导入JSONP模块
import {JsonpModule} from '@angular/http'; @NgModule({ declarations: [ //... List of components that you need. ],imports: [ JsonpModule,//... ],providers: [ //... ],bootstrap: [AppComponent] })
将jsonp服务注入您的服务:
import {Jsonp} from '@angular/http'; @Injectable() export class MegaSuperService { constructor(private _jsonp: Jsonp) {} }
>使用“JSONP_CALLBACK”作为回调属性进行请求:
// inside your service this._jsonp.get('/api/get?callback=JSONP_CALLBACK').map(data => { // Do stuff. });
>正如titusfx所建议的那样,为了映射函数工作,你需要导入,结果是一个Observable,只有默认定义,除了subscribe。您需要手动导入任何其他运算符,如:
import 'rxjs/add/operator/map';
或更一般
import 'rxjs/add/operator/';
就个人而言,我以前在测试版中有这个导入。但是我现在删除它,在Angular 2.0.2中,代码没有中断。这就是为什么这个步骤最初被省略了。如果地图方法未定义出现错误,那肯定有帮助。