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

时间:2017-08-26 15:43:35

标签: node.js angular2-services

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


 }

我知道我的问题很漫长而令人困惑。我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:1)

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