当我在本地服务器(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();
}
}
任何帮助?
答案 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