Response of Http Api call promise is undefined - Angular 2

杀马特。学长 韩版系。学妹 提交于 2019-12-31 04:01:07

问题


I have created an api in WebAPI as below.

public HttpResponseMessage Get() {

            var response = Request.CreateResponse(HttpStatusCode.OK);
            response.Content = new StringContent(JsonConvert.SerializeObject("Hello World"), Encoding.UTF8, "application/json");
            return response;
        }

I am trying to call it from Angular as below

Service.ts

@Injectable()
export class DemoService {

     constructor(private http:Http){}

     GetHttpData(){

        return this.http.get('http://localhost:54037/api/home')
        .map((res:Response)=>res.json());
     }

Component:

export class AppComponent implements OnInit  { 

  data2: String;
  constructor(private s: DemoService){} 

  ngOnInit(){

    this.s.GetHttpData().subscribe(data=>this.data2=data);
    console.log("Http call  completed: "+this.data2);

}

On running the application, I get output:

Http call completed: undefined

Can someone help with this?

Thanks


回答1:


Put the console.log inside the data function.

Could you try like this.

export class AppComponent implements OnInit  { 

  data2: String;
  constructor(private s: DemoService){} 

  ngOnInit(){

    this.s.GetHttpData().subscribe(data=>{
        this.data2=data;
        console.log("Http call  completed: "+this.data2)
    });

}



回答2:


Try to work with a simple promise here.

In Service.ts (DemoService)

 GetHttpData() {

        return new Promise(resolve => {

            this.http.get('http://localhost:54037/api/home')
                .map(res => res.json())
                .subscribe(data => {
            resolve(data);
        });
    }

And in Component:

this.s.GetHttpData()
        .then(data => { 
             console.log("Http call  completed: "+data);
});


来源:https://stackoverflow.com/questions/45328860/response-of-http-api-call-promise-is-undefined-angular-2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!