javascript - Hur man får åtkomst till json som kommer från en GET-operation i Angular2


Jag har en metod som låter mig hämta data

onGet() {
    this._httpService.getCurrent(this.model.user_email)
      .subscribe(
        data => this.getData = JSON.stringify(data),
        error => alert(error),
        () => console.log('Finished')
      );
  }

Jag får ett Json, som ger mig ett nummer, som {current: '1', some_other_data: 'data1'} eller {current: '2', some_other_data: 'data1'} eller {current: '3', some_other_data: 'data1'} osv

Jag får datan, men jag kan inte använda den. Jag behöver använda data för min router, något i stil med (det fungerar så klart inte, bara något slags pseudokod)

 goAhead() {
if(current = 1){
    this.router.navigate( ['page-1'] );
} else if (current = 2){
    this.router.navigate( ['page-2'] );
}
  }

I min goAhead-metod kan jag inte se det nya värdet av getData, det är odefinierat. Hur kan jag fixa detta?

Svar #1

Okej, anta att du använder goahead-funktionen i komponenten och kallar en tjänst som returnerar resultatet som mottaget, ändra din kod till följande

onGet() {
    this._httpService.getCurrent(this.model.user_email)
      .subscribe(
        data => this.getData = data.json();
        error => alert(error),
        () => console.log('Finished')
      );
  }

och förutsatt att goahead-funktionen finns i samma komponent och inte är en array, då

 goAhead() {
if(this.getData.current == 1){
    this.router.navigate( ['page-1'] );
} else if (this.getData.current == 2){
    this.router.navigate( ['page-2'] );
}
  } 

bör göra susen