通用函数

时间:2017-02-10 06:55:57

标签: angular angular2-services subscribe angular2-http

我有一个函数,我用它来决定必须调用哪个服务,我有一个函数模板,用于使用从该函数返回的服务进行调用。此函数调用http.get / http.post等,返回一个Observable并对返回的数据执行映射。 如您所见,我在此处订阅基于服务名称的服务内的通用功能模板。问题是,服务没有被直接调用,但是通过函数在subscribe()中创建了一个问题,其中数据被标记为隐含的类型为“any”。有没有办法在订阅中进行类型转换? 喜欢

subscribe(
 data:string => {

})

否则我被迫切换appname直接调用构造函数中注入的服务。即便在这里,我通过构造函数注入,但我可以通过这种方式减少代码行。

我的代码 -

export class MyComponent {

private service:any;
private appName:string;

constructor(private _service1:Service1,
route:ActivatedRoute){
this.appName = this.route.snapshot.params['app'];
this.service = this.getService(appName);
}

getService(serviceName: string): any {
            var service: {};
            switch (serviceName) {
                case "Service1":
                    service = this._service1;
                    break;
                default:
                    break;
            }
            return service;
        }
runJob(){
   this.service.runJob()
   .subscribe(
       data => {
     // My code here. This gives error as data is mentioned as implicitly of type 'any'
       },
      err => {
   // My actions. Same issue here too
  })

}

}

感谢。

1 个答案:

答案 0 :(得分:0)

是的,您可以像这样输入传递的数据:

myService.getSomething().subscribe((data: DataType) => {
    // do something with data
});