17

次はthis tutorialです。 角:異なるオブジェクト[オブジェクトオブジェクト]を見つけることができません

Cannot find a differ supporting object '[object Object]'

は私が考えるその私のコードで
<ul> 
<li *ngFor = "#user of users"> 
{{user | json}} 
</li> 
</ul> 

関連へ

それがあった前ので、何のエラー、およびわからないイム:エラーを取得していないapi.githubイムからユーザーの一覧を取得する方法にはデータはただのエラーを与えていませんでしクリックし、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

私はあなたがあなたの応答ペイロードに受信したオブジェクトが配列ではないと思われる私のコードです。おそらく、反復したい配列は属性に含まれています。あなたが...

を受信したデータの構造を確認する必要がありますあなたはそのような何かを試みることができる:Githubのドキュメントに続き

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

編集

を(developer.github.com/v3/検索/#検索ユーザー)、応答の形式は次のとおりです。

{ 
    "total_count": 12, 
    "incomplete_results": false, 
    "items": [ 
    { 
     "login": "mojombo", 
     "id": 1, 
     (...) 
     "type": "User", 
     "score": 105.47857 
    } 
    ] 
} 

ので、ユーザーのリストをに含まれていますフィールドと、あなたは、この使用する必要があります。

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

このエラーdidntのショーを行うことによっても表示なしユーザーは、に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[]; 
        } 
); 
関連する問題