2016-06-23 7 views
1

나는 angular2를 테스트하고 편안한 서비스에서 데이터를 검색하려고합니다.Angular2 http json request

내 서비스는 다음과 같이이다 :

import {Injectable} from '@angular/core'; 
import {Http, Response} from '@angular/http'; 
import {annuaireModel} from '../../models/annuaireModel'; 
import {Observable} from 'rxjs/Observable'; 
import 'rxjs/Rx'; 

@Injectable() 
export class annuaireService { 

    constructor(private _http: Http) { }; 

    getAnnuaire(codeRne : string) { 

      var url = 'http://192.168.40.30/api/editionsstandardsAPI/lireannuaire?codeEtablissement=' + codeRne ; 
     return this._http.get(url).map(res => <annuaireModel>res.json()).catch(this.gestErreur); 
    } 

    gestErreur(error: Response) { 
     console.error(error); 
     return Observable.throw(error.json() || 'Erreur serveur'); 
    } 
    /*getHero(id: number) { 
     return Promise.resolve(HEROES).then(heroes => heroes.filter(hero => hero.id === id)[0]); 
    }*/ 
} 

내 구성 요소 :

import {Component} from '@angular/core'; 
import {HTTP_PROVIDERS} from '@angular/http'; 
import {annuaireService} from './annuaireService'; 
import {annuaireModel} from '../../models/annuaireModel'; 

@Component({ 
    templateUrl: 'app/editionsStandards/annuaire/annuaire.html', 
    selector: 'annuaire', 
    directives: [], 
    providers: [HTTP_PROVIDERS,annuaireService] 
}) 

export class annuaireComponent { 

     annuaire : annuaireModel; 
     variableTest : string; 

    constructor(private _annuaireService :annuaireService) { } 

    ngOnInit() { 

     } 

     chargerAnnuaire() { 
      this._annuaireService.getAnnuaire('7508987231').subscribe(
          data => 
          {this.annuaire = data} , 
          error => alert(error), 
          () => console.log('OK') 
         ); 


    } 
} 

내 HTML : 나는 웹 사이트를 실행하면

<h1>Annuaire</h1> 
<button (click)="chargerAnnuaire()" type="button">test</button> 
<div > 
    {{annuaire.entete.raisonSociale}} 
</div> 

, 나는이 오류가 :

cannot read the property entente of undefined.

내 편안한 서비스를 테스트 한하고 끈적 거리는 JSON을 반환하지 않습니다 ....

도와주세요! 나는 내가 뭘 잘못하고 있는지 알 수 없다. 감사

답변

2

시도하는 경우에 annuaire?.

{{ annuaire?.entete.raisonSociale }} 

falsy이다 Elvis 연산자는 entete 부재에 액세스 할 것이다 (널 등 미정).

+0

'entete'에도 'Elvis' 연산자가 필요할 수도 있습니다. – enjoibp3

+0

당신이 옳다면 !! 나는 이것을 썼다 : {{annuaire? .entete?. risonSociale}} 그것은 잘 동작한다. 나는 이미 엘비스 연산자를 시도했지만 첫 번째 요소는 두 번째 요소가 아닙니다. 많은 많은 감사 인사와 –