错误
当我执行功能
时,是否有人知道如何告诉控制台上显示此错误的原因正在显示数据,但仍会显示此错误
empresas = <Empresa> {};
constructor(private service: Service) { }
ngOnInit() {
this.service.getEmpresas().subscribe((res) => {
this.empresas = res
})
}
模板
<tr *ngFor="let empresa of empresas">
<td>
{{ empresa.created_at }}
</td>
<td>
{{ empresa.nome }}
</td>
<td class="text-center">
{{ empresa.protocolo }}
</td>
<td class="text-right">
<a [routerLink]="['/resultado']">Explorar resultado</a>
</td>
</tr>
HistoricoComponent.html:37错误错误:找不到差异 支持'object'类型的对象'[object Object]'。仅限Ng 支持绑定到诸如Arrays之类的Iterables。 在NgForOf.webpackJsonp ... / .. / .. / common/@angular/common.es5.js.NgForOf.ngOnChanges (common.es5.js:1681) at checkAndUpdateDirectiveInline(core.es5.js:10833) at checkAndUpdateNodeInline(core.es5.js:12332) at checkAndUpdateNode(core.es5.js:12271) 在debugCheckAndUpdateNode(core.es5.js:13132) 在debugCheckDirectivesFn(core.es5.js:13073) 在Object.eval [as updateDirectives](HistoricoComponent.html:37) at Object.debugUpdateDirectives [as updateDirectives](core.es5.js:13058) 在checkAndUpdateView(core.es5.js:12238) 在callViewAction(core.es5.js:12603)
服务
getEmpresas(): Observable<any> {
const headers = new Headers();
return this.http.get(`${MEAT_API}/empresas`,
new ResponseOptions({headers: headers}))
.map(response => response.json())
}
答案 0 :(得分:1)
这个错误的原因是你对不可迭代的变量进行迭代
这就是ngFor
失败的原因,请确保empresas是Empresa
的数组,尝试安慰来自API的res
以查看它是否是任何数组Empresa
个对象。错误描述了自己。
NgFor仅支持绑定到诸如Arrays之类的Iterables
答案 1 :(得分:0)
当您的getEmpresas
数据返回时,res的值为对象{}
this.service.getEmpresas().subscribe((res) => {
this.empresas = res
})
*ngFor
指令无法迭代对象(除非您使用的是KeysPipe)。因此要么getEmpresas()
返回一个数组,要么创建所说的KeysPipe。
示例:
import {PipeTransform, Pipe} from "@angular/core";
@Pipe({
name: 'KeysPipe'
})
export class KeysPipe implements PipeTransform {
transform(value, args:string[]) : any {
let keys = [];
for (let key in value) {
keys.push({key: key, value: value[key]});
}
return keys;
}
}
用法:
*ngFor="let empresa of empresas | KeysPipe"
{{empresa.key}} {{empresa.value}}
答案 2 :(得分:0)
getEmpresas()
的响应值是一个对象,并且*ngFor
无法迭代一个对象,这就是为什么必须将对象转换为数组的原因,请将empresas = []清除为空数组
this.service.getEmpresas()。subscribe((res)=> { this.empresas = Object.keys(res).map(function(key){ 返回[Number(key),res [key]]; }); });
在模板中,您可以使用*ngFor
遍历数组,例如
{{empresa [1] .created_at}} {{empresa [1] .nome}} {{empresa [1] .protocolo}}
答案 3 :(得分:0)
您可以执行类似empresas any = [];