Olá, Comunidade Guj
Estou desenvolvendo uma aplicação com IonicV2, logo estou fazendo o uso de Angular2 com TypeScript. Estou usando o Observable para recuperar as responses, e estou usando Subscribe para varrer os valores dentro do Observable retornado.
Segue o meu método que faz requisição para meu servidor
Classe: Services.ts
postObject(serviceRequested:string,urlSearchParams: URLSearchParams): Observable<any>{
return this.http.post(this.getRequestURL(serviceRequested),urlSearchParams, this._getHeaders('P'))
.map(this._extractData)
.catch(this._handleError);
}
Com esses métodos, eu consigo normalmente fazer uma requisição externa. Segue minha classe que consome o Service.ts
import { Services } from './Services';
import { Injectable } from '@angular/core';
import { Http, URLSearchParams} from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { MensagemRetornoJSON } from '../model/MensagemRetornoJSON';
import { Cliente } from '../model/Cliente';
@Injectable()
export class ClienteService extends Services<Cliente>{
public _mensagem: MensagemRetornoJSON;
constructor(private _http: Http){
super(_http);
}
inserirCliente(cliente:Cliente):MensagemRetornoJSON{
let params = new URLSearchParams();
params.set("object",JSON.stringify(cliente));
let observable:Observable<MensagemRetornoJSON> = this.postObject(this.FRADESERVICE_API_INSERIR_CLIENTE,params);
observable.subscribe(r=> this._mensagem = r);
return this._mensagem;
}
}
No trecho observable.subscribe(r=> this._mensagem = r);
, eu varro meu Observable e atribuo a variável de retorno que é MensagemRetornoJSON com o valor de r.
O problema é que quando eu dou um console.log(this._mensagem);
abaixo da linha do subscribe, o valor retornado é ‘undefined’, sendo que eu já atribui um valor a esta variável dentro do subscribe.
Alguem sabe o que está acontecendo? Porque a variável _mensagem vem como ‘undefined’ mesmo depois de eu ter definido um valor para ela?
Grande abraço, comunidade.
Agradeço desde já.