未捕获的类型错误:this.jsonp.request不是Angular2中的函数



我得到以下错误。未捕获的类型错误:this.jsonp.request不是Angular2中的函数。有谁能帮我修一下吗?

我的代码是这样的:

  1. RequestService。ts

    import {Component} from '@angular/core';
    import {JSONP_PROVIDERS, Jsonp,RequestMethod, RequestOptions, URLSearchParams,JSONP_BINDINGS, BaseRequestOptions} from '@angular/http';
    import {Injectable} from '@angular/core';  
    import 'rxjs/add/operator/map';
    @Injectable()
    @Component({
       providers: [JSONP_PROVIDERS]
    })
    export class RequestService {    
      constructor(public jsonp?:Jsonp) {
         this.jsonp = Jsonp;
      }
    getValues = (url) => {
     let  _urlParams = new URLSearchParams();
     _urlParams.set('contentType', 'application/jsonp; charset=utf-8');
     _urlParams.set('dataType', 'jsonp');
     _urlParams.set('timeout', '5000');       
     this.jsonp.request(url + "&callback=JSONP_CALLBACK", {       // getting error here
        contentType: "application/jsonp; charset=utf-8",
        dataType: 'jsonp',
        timeout: 5000
     })
        .map(res => {                 
             return res.json();
         })
         .subscribe(res => {
             // here some stuffs with response
         }), err => {
         console.log('error')
     };
    }
    }
    
  2. abc.ts

    import {RequestService}           from './../request_service';
    export class ABC {
      private request:any = new RequestService();
      bindValues() {
         this.request.getValues('http://google.co.in');    // note: url given here is sample
          }
       }
    

Thanks in advance

问题在这一行:

constructor(public jsonp?:Jsonp) {
  this.jsonp = Jsonp; // <----
}

如果使用public或private关键字,则不需要设置属性。此外,您可以设置类而不是构造函数参数…

尝试以下操作:

constructor(public jsonp?:Jsonp) {
}

编辑

我觉得你们的装修师有问题。在服务的情况下,您只需要@Injectable,而不是@Component(仅用于组件)。

所以我将使用以下代码:

@Injectable()
export class RequestService {    
  constructor(public jsonp?:Jsonp) {
  }
  (...)
}

在启动应用程序时设置提供程序:

bootstrap(AppComponent, [ JSONP_PROVIDERS ]);

参见这个问题:

  • JSONP调用=>参考错误:文档未定义

要理解如何将依赖注入到服务中,你可以看一下这个描述分层注入器如何工作的问题:

    在angular 2 (Beta版)中,把一个服务注入另一个服务的最佳方式是什么?

相关内容

最新更新