我想拥有
这样的结构MyStruc {
action2Execute:any; // see #q3
constructor(coll: CollectionServices) {
// see #q1
}
}
并具有类似的ServiceClass
MyServiceClass {
constructor(public http: HttpClient) { }
myHTTPRequest(id:number):Observable<boolean>{
this.http.get<boolean>('call/my/webservice/'+id)
}
}
和类似Controller的
MyControllerClass {
constructor(private coll: CollectionServices) {}
...
execHTTP() {
new MyStruc(coll).action2Execute.apply(1);
}
}
现在,我的目的是将action2Exectue
绑定到方法myHTTPRequest
上,对其进行调用并处理结果。我对此有两个问题
如果我将action2Execute
设置为this.action2Execute=coll.myHTTPRequest
,则在MyControllerClass.#execHTTP()
中调用它时遇到了问题,我会收到一条错误消息:
TypeError: Cannot read property 'get' of undefined
==> http
是undefined
我的另一个问题是,仅使用apply
并不能从可观察到的结果(即HTTP请求)获得结果。
action2Exectue
类中,MyStruc
应该是哪种类型?答案 0 :(得分:0)
我弄清楚了如何声明它:
MyStruc {
action2Execute:((id:number) => Observable<any>);
constructor(coll: CollectionServices) {
// to bind it to the Service ...
this.action2Execute=coll.myHTTPRequest.bind(coll);
}
}
我可以像正常的Observable一样称呼它
MyControllerClass {
...
constructor(private coll: CollectionServices) {}
...
execHTTP() {
new MyStruc(coll).action2Execute(1).subscribe(res => console.log(res));
}
}