angular - कोणीय: एक अलग सहायक वस्तु नहीं खोज सकता है '[वस्तु वस्तु]'




angular2-routing angular2-directives (3)

इस ट्यूटोरियल का अनुसरण कर रहा हूं । Api.github Im से उपयोगकर्ताओं की सूची प्राप्त करने के रास्ते में त्रुटि हो रही है:

एक अलग सहायक वस्तु नहीं मिल सकती है '[वस्तु वस्तु]'

मुझे लगता है कि इससे संबंधित है

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

मेरे कोड में क्योंकि इससे पहले कोई त्रुटि नहीं हुई थी, और डेटा न मिलने के कारण अनिश्चित हो गया था, बस क्लिक करने पर कोई त्रुटि नहीं दी गई, यहाँ अब तक मेरा कोड है

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

इनपुट प्रॉपर्टी के आसपास चौकोर कोष्ठक गुम होने से यह त्रुटि हो सकती है। उदाहरण के लिए:

Component Foo {
    @Input()
    bars: BarType[];
}

सही बात:

<app-foo [bars]="smth"></app-foo>

गलत (ट्रिगर त्रुटि):

<app-foo bars="smth"></app-foo>


कुछ ऐसा है जिसने मुझे एक से अधिक बार पकड़ा है एक ही नाम वाले पृष्ठ पर एक और चर है।

उदाहरण के लिए NgFor के डेटा के नीचे उदाहरण चर requests । लेकिन # #requests नामक एक वैरिएबल का उपयोग if-else के लिए किया जाता है

<ng-template #requests>
  <div class="pending-requests">
    <div class="request-list" *ngFor="let request of requests">
      <span>{{ request.clientName }}</span>
    </div>
  </div>
</ng-template>

मुझे लगता है कि आपके प्रतिक्रिया पेलोड में आपको प्राप्त वस्तु एक सरणी नहीं है। शायद जिस सरणी को आप पुनरावृत्त करना चाहते हैं वह एक विशेषता में निहित है। आपको प्राप्त आंकड़ों की संरचना की जांच करनी चाहिए ...

आप कुछ इस तरह की कोशिश कर सकते हैं:

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 doc (developer.github.com/v3/search/#search-users) के बाद, प्रतिक्रिया का प्रारूप है:

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






angular2-http