node/angular2 服务将值返回给错误的组件



我是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);
}

}

我知道我的问题很长,很混乱。我将不胜感激任何帮助。

您需要在生命周期挂钩 OnDestroy 中取消订阅这两个组件。

最新更新