角度:找不到不同的支持对象'[object Object]'
问题描述:
Im following this tutorial。在摆脱api.github IM用户的列表中得到错误的方式:角度:找不到不同的支持对象'[object Object]'
Cannot find a differ supporting object '[object Object]'
我认为它涉及到
<ul>
<li *ngFor = "#user of users">
{{user | json}}
</li>
</ul>
在我的代码,因为之前没有任何错误,和IM不确定如果数据来自GET请求,只需点击没有给任何错误,这是我到目前为止的代码
@Component({
selector: 'router',
pipes : [],
template: `
<div>
<form [ngFormModel] = "searchform">
<input type = 'text' [ngFormControl]= 'input1'/>
</form>
<button (click) = "getusers()">Submit</button>
</div>
<div>
<ul>
<li *ngFor = "#user of users">
{{user | json}}
</li>
</ul>
</div>
<router-outlet></router-outlet>
`,
directives: [FORM_DIRECTIVES]
})
export class router {
searchform: ControlGroup;
users: Array<Object>[];
input1: AbstractControl;
constructor(public http: Http, fb: FormBuilder) {
this.searchform = fb.group({
'input1': ['']
})
this.input1 = this.searchform.controls['input1']
}
getusers() {
this.http.get(`https://api.github.com/
search/users?q=${this.input1.value}`)
.map(response => response.json())
.subscribe(
data => this.users = data,
error => console.log(error)
)
}
}
bootstrap(router, [HTTP_PROVIDERS])
答
我认为你在你的响应有效负荷收到的对象不是一个数组。也许你想要迭代的数组包含在一个属性中。您应该检查接收到的数据的结构...
你可以尝试这样的事情:
getusers() {
this.http.get(`https://api.github.com/search/users?q=${this.input1.value}`)
.map(response => response.json().items) // <------
.subscribe(
data => this.users = data,
error => console.log(error)
);
}
编辑
继Github上的文档(developer.github.com/v3/搜索/#搜索用户),响应的格式为:
{
"total_count": 12,
"incomplete_results": false,
"items": [
{
"login": "mojombo",
"id": 1,
(...)
"type": "User",
"score": 105.47857
}
]
}
所以用户的名单载到items
场,你应该这样做:
getusers() {
this.http.get(`https://api.github.com/search/users?q=${this.input1.value}`)
.map(response => response.json().items) // <------
.subscribe(
data => this.users = data,
error => console.log(error)
);
}
答
我在我的代码收到此错误,因为我不能运行JSON.parse(结果)。
所以我的结果是一个字符串,而不是一个对象数组。
即我:的
"[{},{}]"
代替:
[{},{}]
import { Storage } from '@ionic/storage';
...
private static readonly SERVER = 'server';
...
getStorage(): Promise {
return this.storage.get(LoginService.SERVER);
}
...
this.getStorage()
.then((value) => {
let servers: Server[] = JSON.parse(value) as Server[];
}
);
做这个错误没有显示也没有显示的用户,执行console.log是空 – blackHawk
也是为什么发生的事情,以及用户如何工作 – blackHawk
你应该使用'items'。请参阅此文档:https://developer.github.com/v3/search/#search-users了解响应负载的格式。这对应于响应负载中的用户数组...我更新了我的回答 –