2016-02-11 2 views
3

Я пытаюсь использовать следующий код после нескольких попыток онлайн-уроков. Я не могу заставить его работать.Ошибка при использовании Http JSON AngularJS 2

..// 
import {Http, HTTP_PROVIDERS} from 'angular2/http'; 

@Component({ 

    viewProviders: [HTTP_PROVIDERS], 

    template: ` 
    ..// 
    <div class="col-md-6 col-md-offset-3 well"> 

     <input type="button" class="btn btn-success btn-block" 
     (click)="get()" value="Fetch Users"> 

     <hr> 
     <ul> 
      <li *ngFor="#user of users"> 
      Id: {{ user.name }} | Name: {{ user.name }} | JSON: {{ user | json }} 
      </li> 
     </ul> 
    </div> 

    ..// 

export class Mov { 

    //Inicio test http 

    users: Array<Object>; 
    http: any; 

    // 
    //constructor(@Inject(HttpFactory) http) { 
    //constructor(http: Http) { 
    constructor(http: Http){ 
     // 
     this.http = http; 
    } 

    get(){ 
     this.http('resources/users.json') 
     .map(res => res.json()) 
     .subscribe(users => this.users = users); 
    } 

получить эту ошибку:

EXCEPTION: Error during evaluation of "click"

ORIGINAL EXCEPTION: TypeError: this.http is not a function

кто-нибудь может сказать мне, что я делаю неправильно, я извиняюсь за мой английский.

ответ

3

Ну, поскольку состояние сообщения об ошибке this.http не является функцией, это объект, который имеет несколько методов. Вам нужно this.http.get() метод:

this.http.get('resources/users.json') 
    .map(res => res.json()) 
    .subscribe(users => this.users = users); 
+0

это решает проблему, спасибо, но я думаю, что и ответ @PankajParkar –

+0

Я понятия не имею, что принять, я думаю они помогли с ошибкой. –

+0

Я пробовал, как и код без изменений, как опубликовано, и ваш ответ - это решение –

3

Кажется, что-то Http не вводится правильно. Используйте @Inject для инъекции Http зависимости.

import { Component, Inject} from 'angular2/core'; 
//above code should be at start. 

constructor(@Inject(Http) http: Http) { 

@Inject необходим для получения зависимости, если не используется Машинопись для transpilation из JS.

+0

Может быть, я делаю что-то неправильно, что я добавляю этот импорт {Inject} от «angular2/ядра»; и конструктор (@Inject (Http) http: Http) {и получить равную ошибку –

+0

@AngelAngel может я знаю, какую версию углового2 вы используете? –

+0

"зависимости": { "angular2": "2.0.0-beta.3", –

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