admin管理员组

文章数量:1323035

My Service :

fetchData(url,request)
  {
    return this.http.post(this.apiUrl+url,request).subscribe(
        (response) => {return response.json()}
    );
  }

My Component :

ngOnInit()
    {
        this.response = this.dataService.fetchData('friends/grow_network',{});
        console.log('s ',this.response);
    }

if I console response.json() in service it shows proper data which is ing from api but if I console in ponent it shows like this :

Subscriber {closed: false, _parent: null, _parents: null, _subscriptions: Array(1), syncErrorValue: null…}

how to get data in ponent which is ing from api not Subscriber data ?

My Service :

fetchData(url,request)
  {
    return this.http.post(this.apiUrl+url,request).subscribe(
        (response) => {return response.json()}
    );
  }

My Component :

ngOnInit()
    {
        this.response = this.dataService.fetchData('friends/grow_network',{});
        console.log('s ',this.response);
    }

if I console response.json() in service it shows proper data which is ing from api but if I console in ponent it shows like this :

Subscriber {closed: false, _parent: null, _parents: null, _subscriptions: Array(1), syncErrorValue: null…}

how to get data in ponent which is ing from api not Subscriber data ?

Share Improve this question edited Jul 27, 2017 at 6:51 georgeawg 49k13 gold badges77 silver badges98 bronze badges asked Jul 27, 2017 at 6:42 Mohit BumbMohit Bumb 2,4935 gold badges33 silver badges54 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 2

When doing it your way, you write in the variable "reponse" the observable object and not the result. The value of the result is not there yet when calling the method, because it will be asynchronous.

To get what you want you have to do the following:

fetchData(url,request)
  {
    return this.http.post(this.apiUrl+url,request).map(
        (response) => {return response.json()}
    );
  }

ngOnInit()
    {
        this.response = this.dataService.fetchData('friends/grow_network',{})
                         .subscribe(result => {
                           this.response = result;
                           console.log('s ',this.response);
                         });

    }

You can using Observables in angular . and please checkout this below discussion

What is the difference between Promises and Observables?


Now try this below code instead of your code in ponent

 this.response = this.dataService.fetchData ('friends/grow_network'{})
                 .subscribe(res=> { console.log(res);
                 }), error => alert(error);

and you service code should be

fetchData(url,request)
  {
    return this.http.post(this.apiUrl+url,request).map(
        (response) => {return response.json()}
    );
  }

本文标签: javascriptHow to return data coming from response instead of subscription json in Angular 24Stack Overflow