Bom dia, Julio!
A ideia não seria fazer uma outra requisição com método get e sim armazenar o usuário no serviço para que fosse recuperado posteriormente quando necessário.
Exemplo prático:
//usuario-service.ts
@Injectable
export class UsuarioService {
private _usuarioLogado: Usuario;
constructor(http: Http){}
loginUser(params){
let headers = new Headers({ 'Content-Type' : 'application/json'});
return this.http.post(this.apiUrl + 'login', params, {
headers:headers,
method: "POST"
})
.map((res: Response) => { return res.json(); })
.do((usuario: Usuario) => this._usuarioLogado = usuario);
}
get usuarioLogado() {
return this._usuarioLogado;
}
}
Repare que no código tentei representar o seu serviço que faz o login chamando de UsuarioService
. Dentro dele, coloquei o método loginUser(params)
que vc descreveu e acrescentei nesse método a função do()
do RxJS
. Essa função vc precisará importar da mesma forma que se faz com o map()
e o objetivo dela é executar algo quando o Observable
é bem sucedido (no seu caso específico, quando a requisição é bem sucedida). Então, dentro do do()
eu pego o usuário que vem do map()
e coloco ele dentro do atributo da classe chamado _usuarioLogado
.
Por fim, eu criei um getter
para o atributo _usuarioLogado
de modo que seja possível recuperar o usuário que está logado em outros componentes.
Assim, sempre que vc precisar do usuario logado, basta fazer algo do tipo:
//home.ts
@Component
export class HomePage {
constructor(public usuarioService: UsuarioService){}
}
//home.html
<ion-header>
...
</ion-header>
<ion-content>
Usuario logado no momento: {{usuarioService.usuarioLogado}}
</ion-content>
Abraço,Gabriel Leite.