Angular 4 + Web API无法使用GET方法检索数据

时间:2017-09-13 11:47:07

标签: angular asp.net-web-api

当我在本地服务器(http://localhost:51085/api/GetMethod)上调用GET方法时,我的Web APPI正常工作,它会检索正确的对象数组。

但是,当我从Angular4应用程序调用它时,返回的observable显示

  

[object Object]和* ngFor的错误(ERROR错误:找不到   不同的'对象'类型的支持对象'[object Object]'。 NgFor   仅支持绑定到诸如Arrays之类的Iterables。)。

export class AppComponent { 

   myDesiredDataFromServer$; 

   constructor(private service: ServiceHTTP) { 
      this.myDesiredDataFromServer = service.getData(); 
   }
}

任何帮助?

3 个答案:

答案 0 :(得分:1)

我认为你的问题是你不等待来自服务器的响应..

如果.ts中的服务返回Observable<Array<any>>

所以试试:

   export class AppComponent { 

       myDesiredDataFromServer$; 



 constructor(private service: ServiceHTTP) { 


       service.getData().subscribe((resp)=>{
             this.myDesiredDataFromServer = resp;
        }); 
       }
    }

如果它返回Promise<Array<any>>

export class AppComponent { 

       myDesiredDataFromServer$; 

       constructor(private service: ServiceHTTP) { 
          service.getData().then((resp)=>{
             this.myDesiredDataFromServer = resp;
             }); 
       }
    }

如果它返回async

 export class AppComponent { 

       myDesiredDataFromServer$; 

       async constructor(private service: ServiceHTTP) { 
         this.myDesiredDataFromServer = await  service.getData();
       }
    }

答案 1 :(得分:0)

export class AppComponent { 

   public myDesiredDataFromServer$; 

   constructor(private service: ServiceHTTP) { 
      this.myDesiredDataFromServer$ = service.getData(); 
   }
}

然后,如果它是一个可观察的,请在模板中尝试以下内容来打印出完整的对象而不仅仅是[object Object]

{{ myDesiredDataFromServer$ | async | json }}

如果您的ServiceHTTP getData方法返回了一个observable,那么您至少应该能够看到您获得的数据的格式。如果你在* ng中使用它,请确保它是类型数组

e.g。如果它打印{someKey:[]}那么你可以运行* ngFor =“let item of(myDesiredDataFromServer $ | async)?. someKey”

答案 2 :(得分:0)

这有效:

service.getData().subscribe((resp)=>{
    this.myDesiredDataFromServer$ = JSON.parse((resp)['_body']); 

});

enter code here