我有一个函数,我用它来决定必须调用哪个服务,我有一个函数模板,用于使用从该函数返回的服务进行调用。此函数调用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
})
}
}
感谢。
答案 0 :(得分:0)
是的,您可以像这样输入传递的数据:
myService.getSomething().subscribe((data: DataType) => {
// do something with data
});