2016-04-20 3 views
0

Я пытаюсь этот код в Angular2 бета 15.Angular2 http.get код не работает

import {Component} from 'angular2/core'; 
import {Http, Response} from 'angular2/http'; 

@Component({ 
    selector: 'my-app', 
    template: ` 
     <h2>Basic Request</h2> 
     <button type="button" (click)="makeRequest()">Make Request</button> 
     <div *ngIf="loading">loading...</div> 
     <pre>{{data.title}}</pre> 

    ` 

}) 
export class AppComponent { 

    data: any; 
    loading: boolean; 

    constructor(public http: Http) { 
    } 
    makeRequest(): void { 
     this.loading = true; 
     this.http.get('http://jsonplaceholder.typicode.com/photos/1') 
      .map((res: Response) => res.json()) 
      .subscribe(res => { 
       this.data = res; 
       this.loading = false; 
      }); 
    } 

} 

По какой-то причине он получает данные, но не отображает его.

Что мне здесь не хватает?

+0

Неправильно ли обновляется свойство 'loading'? –

+0

Он просто говорит Загрузка ... и ответ пуст – Satch3000

ответ

5

Мой код работает отлично на "angular2": "2.0.0-beta.15":

import {Component} from 'angular2/core'; 
import {HTTP_PROVIDERS,Http,Response} from 'angular2/http'; 
// see issue more detail here : https://github.com/angular/angular/issues/5632#issuecomment-167026172 
import 'rxjs/Rx'; 



@Component({ 
    selector: 'my-app', 
    template: ` 
     <h2>Basic Requests</h2> 
     <button type="button" (click)="makeRequest()">Make Request</button> 
     <div *ngIf="loading">loading......</div> 
     <pre>title : {{array.title}}</pre> 

    `, 
    providers: [HTTP_PROVIDERS] 
} 
export class AppComponent { 

    array = Array<any>; 
    loading: boolean; 

    constructor(
     public http:Http 
    ){ 

    } 
    makeRequest(): void { 
     this.loading = true; 
     this.http.get('http://jsonplaceholder.typicode.com/photos/1') 
     .map((res: Response) => res.json()) 
      .subscribe(res => { 
       this.array = res; 
       this.loading = false; 
      }); 

    } 

} 
+0

Работает. Как я могу уловить ошибку HTTP-запроса? как код ошибки запроса тоже. –

+0

Вы можете сделать .catch (err => console.log («вот моя ошибка», ошибка)) после подписания. – Nicolas2bert

+0

да, понял, что, спасибо –

1

Все выглядит нормально, просто изменится:

{{data?.title}}

data неопределен, пока ваш запрос не завершится. Оператор elvis помогает избежать нулевого указателя.

Кроме того, добавить недостающий импорт:

import 'rxjs/Rx'; 
+0

Получение ответа null ... нет данных, поступающих в – Satch3000

+0

Проверка консоли браузера на ошибки – kemsky

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