17

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]) 

回答

21

我认为你在你的响应有效负荷收到的对象不是一个数组。也许你想要迭代的数组包含在一个属性中。您应该检查接收到的数据的结构...

你可以尝试这样的事情:

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) 
    ); 
} 
+0

做这个错误没有显示也没有显示的用户,执行console.log是空 – blackHawk

+0

也是为什么发生的事情,以及用户如何工作 – blackHawk

+0

你应该使用'items'。请参阅此文档:https://developer.github.com/v3/search/#search-users了解响应负载的格式。这对应于响应负载中的用户数组...我更新了我的回答 –

1

我在我的代码收到此错误,因为我不能运行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[]; 
        } 
); 
相关问题