2017-12-14 18 views
0

프로젝트의 로그인 시스템을 만들려고하고 있는데 인증 서비스, 토큰 서비스 및 로그인 구성 요소가 있습니다. RxJS로 시작 했으므로 이것은 매우 어리석은 질문 일 가능성이 큽니다.RxJS를 사용하는 HTTP 요청에서 Angular 구성 요소간에 데이터를 전달하는 올바른 방법은 무엇입니까?

내 설계는 토큰 서비스가 토큰을 가져 와서 백엔드와 함께 HTTP 요청을 수행하고 사용자가 성공적으로 로그인했는지 여부를 결정하는 인증 서비스에 정보를 전달한 다음 다시 전달됩니다 로그인 구성 요소로 보내면 사용자가 더 이상 사이트로 들어갈 수 없게됩니다.

코드 내 토큰 서비스에 이런 식입니다 : 정식 서비스가 로그인 구성 요소에 주입하고, 토큰 서비스가 인증 서비스에 주입

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 구성 요소로 반환하려면 어떻게해야합니까?

답변

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

}

당신의 인증 서비스, 여기에 관찰 대신 undefined를 반환합니다 끝) 당신이 _tokenService

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

하여 makeRequest (로 주입 토큰 서비스를 가정 . –

+0

죄송합니다 관측 가능으로 돌아 가기 깜빡했습니다. –

+0

기다려주십시오. 내게 맞지 않습니다. –