17

Im po this tutorial. W drodze do listy użytkowników z api.github Im uzyskania coraz błędzie:Kątowa: nie można znaleźć innego obiektu pomocniczego "[obiekt obiektu]"

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

Myślę, że jego związany

<ul> 
<li *ngFor = "#user of users"> 
{{user | json}} 
</li> 
</ul> 

W moim kodu, bo zanim nie było żadnego błędu, a im pewności jeżeli dane pochodzą z żądania gET, po prostu klikając zrobił daje żadnych błędów, tutaj jest mój kod tak daleko

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

Odpowiedz

21

myślę, że obiekt, który otrzymał w swojej ładowności odpowiedź nie jest tablicą. Być może tablica, którą chcesz iterować, jest zawarta w atrybucie. Należy sprawdzić strukturę otrzymanych danych ...

można spróbować coś takiego:

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

Edycja

Following doc GitHub (developer.github.com/v3/ szukaj/# search-użytkownicy), format odpowiedzi jest:

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

więc lista użytkowników jest zawarty w items pola i należy to wykorzystać:

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

wykonując ten błąd nie zrobił pokaz również nie wyświetlane użytkownika, console.log jest pusty – blackHawk

+0

również dlaczego tak się stało i jak działało .users – blackHawk

+0

Używasz 'items'. Zobacz ten dokument: https://developer.github.com/v3/search/#search-users dla formatu ładunku odpowiedzi. Odpowiada to tablicy użytkowników w ładunku odpowiedzi ... Zaktualizowałem moją odpowiedź: –

1

Dostałem ten błąd w moim kodu, bo nie by uruchomić JSON.parse (wynik).

Więc mój wynik był ciągiem zamiast tablicy obiektów.

czyli mam:

"[{},{}]" 

zamiast:

[{},{}] 

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[]; 
        } 
); 
Powiązane problemy