使用RxJS从HTTP请求在Angular组件之间传递数据的正确方法是什么?

时间:2017-12-14 08:22:34

标签: angular rxjs q angular2-http angular4-httpclient

我正在尝试为项目创建一个登录系统,我有一个auth-service,令牌服务和我的登录组件,我刚开始使用RxJS,所以这很可能是一个非常愚蠢的问题。

我的设计是让令牌服务获取令牌并使用我的后端执行HTTP请求,将信息传递到auth-service,这将确定用户是否已成功登录,然后将其传递回login-component将停止允许用户进一步进入站点。

代码在我的令牌服务中是这样的:

getToken() : any {
   return this.http.get(this.SERVER.HREF + query, requestOptions).share();
}

makeRequest() : any {
   let obsv = getToken();
   obsv.subscribe((res: Response) =>) {
     let token = res.json().data.token;
     this.http.get(this.SERVER.HREF + query, requestOptions).share(); 
     // above is that Observable that returns the data that I would like to
     // pass back to auth-service
   }
}

将auth-service注入login-component,并将令牌服务注入到auth-service中。如何获取我的请求结果到auth-service,以便它可以解析它并将一个布尔值返回给login-component?

1 个答案:

答案 0 :(得分:0)

您的令牌服务

getToken() : any {
   return this.http.get(this.SERVER.HREF + query, requestOptions);
}

makeRequest() : any {
  return this.getToken().switchMap(()=>{
     return this.http.get(this.SERVER.HREF + query, requestOptions)
});

}

您的身份验证服务,假设您已将令牌服务注入_tokenService

this._tokenService.makeRequest().subscribe(console.log)