2016-06-29 7 views
1

Я пытаюсь получить данные в формате JSON с API и отобразить его содержимое с помощью углового 2. Conversation компонента:Http Get на Угловое 2, прочитать JSON

export class ConversationComponent implements OnInit { 
    public conversation: any; 

    constructor(private conversationsService: ConversationsService, 
       private routeParams: RouteParams) { } 


    ngOnInit() { 
     let id = +this.routeParams.get('id'); 
     this.conversationsService.getConversation(id) 
      .subscribe(
      con => this.conversation = con, 
      error => console.log(this.conversation) 
      ) 
    } 
} 

ComversationsService:

@Injectable() 
export class ConversationsService { 

    private url = 'https://dev4.aldensys.com/PrometheusWebAPI/api/Conversations/'; 
    private token = this.storageService.getAuthorizationToken(); 

    constructor(private http: Http, private storageService: StorageService) { } 

    getConversation(id: number) { 
     var headers = new Headers(); 
     headers.append('Authorization', 'Bearer ' + this.token); 
     var options = new RequestOptions({ headers: headers }); 
     return this.http.get(this.url + id, options) 
      .map(res => res.json()) 
      .catch(this.handleError); 
    } 

    private handleError(error: any) { 
     let errMsg = (error.message) ? error.message : 
      error.status ? `${error.status} - ${error.statusText}` : 'Server error'; 
     console.error(errMsg); // log to console instead 
     return Observable.throw(errMsg); 
    } 
} 

Для некоторых Причина this.conversation не определена. Я попытался предупредить ответ сразу после того, как я перепечатал его в json в служебном файле: он показывает «объект: объект»

Любая помощь будет очень признательна.

+0

Что значит неопределенный? Вы имеете в виду из этой строки 'error => console.log (this.conversation)'? – maxisam

+0

на * .component.html файле Я пытаюсь отобразить '{{разговор.number}}'. Вот где говорится, что разговор не определен. – Yhlas

+0

Если я изменяю '{{convers.number}}' на '{{(разговор)? Номер беседы: ""}} 'работает. Однако для этого должно быть лучшее решение, чем это. – Yhlas

ответ

2

Я вижу. Вы проблемой является шаблон показывает ошибку до того, как данные поступают в систему.

использовать этот

{{conversation?.number}}

в Angular2 это не то, что простительно по сравнению с Angular1

Вот ссылка на doc

+1

Это помогло, спасибо большое. Я фактически использовал '* ngIf = 'беседу', поэтому мне не нужно редактировать каждую строку, где я ссылаюсь на разговор. [Attribute]. – Yhlas

Смежные вопросы