2016-07-18 3 views
2

각도 서비스 hero.service.ts에서 json 데이터를 가져 오려고합니다. 가짜 http API inMemoryDataService를 사용할 때 모든 것이 잘 작동하고 in-memory-data.service.ts 파일에서 json 데이터를 가져옵니다. 그러나 실제 json 파일에서 데이터를 가져 오려고하면 작동하지 않으며 브라우저에 'collection not found'오류가 표시됩니다.AngularJS 2 : json 파일에서 데이터를 가져 오지 못함

hero.service.ts :

import { Injectable } from '@angular/core'; 
import { Headers, Http , Response} from '@angular/http'; 

import 'rxjs/add/operator/toPromise'; 

import { Hero } from './hero'; 

@Injectable() 
export class HeroService { 

    private heroesUrl = 'app/fakeListOfHeroes'; // URL to web api 
    //private heroesUrl = 'app/heroes.json'; // URL to JSON file 

    constructor(private http: Http) { } 

    getHeroes(): Promise<Hero[]> 
    { 
     return this.http.get(this.heroesUrl) 
       .toPromise() 
       .then(response => response.json().data) 
       .catch(this.handleError); 
    } 

    private handleError(error: any) 
    { 
     console.error('An error occurred', error); 
     return Promise.reject(error.message || error); 
    } 
} 

hero.service.ts : 여기

(모든 3 개 개의 파일이 응용 프로그램/폴더에있는) 파일의 내용입니다

export class InMemoryDataService { 
     createDb() { 
     let fakeListOfHeroes = [ 
     {id: 11, name: 'Mr. Nice'}, 
     {id: 12, name: 'Narco'}, 
     {id: 13, name: 'Bombasto'}, 
     {id: 14, name: 'Celeritas'}, 
     {id: 15, name: 'Magneta'}, 
     {id: 16, name: 'RubberMan'}, 
     {id: 17, name: 'Dynama'}, 
     {id: 18, name: 'Dr IQ'}, 
     {id: 19, name: 'Magma'}, 
     {id: 20, name: 'Tornado'} 
     ]; 
     return {fakeListOfHeroes}; 
     } 
    } 

heroes.json :

브라우저에서
{ 
     "data": [{ 
      "id": 11, 
      "name": "Mr. Nice" 
     }, { 
      "id": 12, 
      "name": "Narco" 
     }, { 
      "id": 13, 
      "name": "Bombasto" 
     }, { 
      "id": 14, 
      "name": "Celeritas" 
     }, { 
      "id": 15, 
      "name": "Magneta" 
     }, { 
      "id": 16, 
      "name": "RubberMan" 
     }, { 
      "id": 17, 
      "name": "Dynama" 
     }, { 
      "id": 18, 
      "name": "Dr IQ" 
     }, { 
      "id": 19, 
      "name": "Magma" 
     }, { 
      "id": 20, 
      "name": "Tornado" 
     }] 
    } 

오류 : 어떤 도움을 주시면 감사하겠습니다

error in browser

. 감사!

+0

당신이 JSON 파일에 대한 URL을 열려고 수 : 문제 main.ts 파일에서 그 라인을 해결 언급? 그것이 정말로 거기에 있는지 단지 알기 위해! – rinukkusu

+0

@rinukku : 네, 괜찮습니다. json이 있습니다. http://imgur.com/K9IzTim – tkarra

+0

오류 메시지는 URL이 'null'이라고 표시합니다. 이상 하네. 아마도 http://stackoverflow.com/questions/37517183/how-do-i-get-the-absolute-path-of-the-current-page-in-angular-2/37517504#37517504와 같은 것을 사용해야 할 것입니다. –

답변

8

발견! InMemoryBackendServiceInMemoryDataServicemain.ts 파일에 사용되어 http.get 메소드에서 호출을 '리디렉션'하는 것 같습니다. 브라우저에서 (3004/응용 프로그램/heroes.json : // localhost를 HTTP)

// Imports for loading & configuring the in-memory web api 
    import { XHRBackend } from '@angular/http'; 

    //import { InMemoryBackendService, SEED_DATA } from 'angular2-in-memory-web-api'; 
    //import { InMemoryDataService }    from './in-memory-data.service'; 

    // The usual bootstrapping imports 
    import { bootstrap }  from '@angular/platform-browser-dynamic'; 
    import { HTTP_PROVIDERS } from '@angular/http'; 

    import { AppComponent }   from './app.component'; 
    import { appRouterProviders } from './app.routes'; 

    bootstrap(AppComponent, [ 
     appRouterProviders, 
     HTTP_PROVIDERS 
     /*, 
     { provide: XHRBackend, useClass: InMemoryBackendService }, // in-mem server 
     { provide: SEED_DATA, useClass: InMemoryDataService }  // in-mem server data 
     */ 
    ]); 
+0

아, 예 ... 같은 문제가 있었는데 ... 꽤 시간이 걸렸습니다. – Rodney

+0

감사합니다. 덕분에 저 또한 도움이되었습니다. – sabin

관련 문제