我是nodejs / angular2的新手。我对节点的异步行为及其返回角度服务有一个奇怪的问题。我遇到的问题是两个不同的角度分量,即组件A和组件B在其中注入相同的角度服务。
服务器端是一个异步节点服务器,需要一些时间来完成请求。问题是当应用程序从角度组件A路由到角度组件B时,有时请求到节点从组件A完成但是因为我们当前路由到组件B,响应就在那里。 (组件A和B不可同时显示。一次只能看到一个)
因为组件B也订阅了相同的服务/方法,它将获得为组件A指定的返回结果。导致错误的值。
组件B是否有办法仅接收对其发出的请求的响应。
两个组件都在服务中订阅了相同的方法:
这段代码很容易放到这里,所以我要做片段。
以下是每个组件中的代码。
getNode(){
this.userService.getNode().subscribe(resNodeData => {
this.node = resNodeData;
if(this.node == null){
return null;
}
else{
// console.log(this.node);
}
});
}
服务层代码:
export class UserService {
//call to node server async
getNode() {
return this.http.get("http://" + host + ":3000/api/namenode/" + this.clusterService.getCluster())
.map((res:Response) => res.json())
.catch(this._errorHandler);
}
}
我知道我的问题很漫长而令人困惑。我将不胜感激任何帮助。
答案 0 :(得分:1)
您需要在两个组件的生命周期钩子OnDestroy中取消订阅。