2016-10-04 3 views
5

Я пытаюсь выполнить запрос на получение api на localhost из своего углового приложения. Но по какой-то причине угловой клиент http, похоже, не выполняет запрос на получение.angular2 http.get() не отправляет запрос на сервер

Я могу видеть на своем сервере api, что запрос получения не был получен. И это вызывает ошибку. Api работает отлично, я пытался сделать завиток, и я получаю ожидаемые результаты.

EXCEPTION: Uncaught (in promise): TypeError: Cannot read property 'subscribe' of undefined

api.service

import { Injectable } from '@angular/core'; 
import { Headers, Http, Response, URLSearchParams, RequestOptions } from '@angular/http'; 
import { Observable } from 'rxjs/Rx'; 

@Injectable() 
export class ApiService { 
    headers: Headers = new Headers({ 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
    }); 

    api_url: string = 'http://localhost:5001'; 

    constructor(private http: Http) { } 

    private getJson(response: Response) { 
     return response.json().results; 
    } 

    checkForError(response: Response): Response { 
     if (response.status >= 200 && response.status < 300) { 
      return response; 
     } else { 
      var error = new Error(response.statusText); 
      error['response'] = response; 
      Observable.throw(error); 
     } 
    } 

    get(path: string, params: URLSearchParams): Observable<any> { 
     return this.http 
      .get(`${this.api_url}${path}/`, { headers: this.headers }) 
      .map(this.checkForError) 
      .catch(err => Observable.throw(err)) 
      .map(this.getJson); 
    } 

api.component.ts

import { Component, OnInit } from "@angular/core"; 
import { ApiService } from './api.service'; 

@Component({ 
    selector: 'item', 
    templateUrl: './item.component.html' 
}) 
export class ItemComponent implements OnInit { 
    private itemData; 
    private errorAlert; 

    constructor(private apiService: ApiService) {} 

     ngOnInit() { 
      this.apiService.get('/items').subscribe(
       result => this.itemData = result, 
       error => this.errorAlert = {msg: error, type: 'danger', closable: true}, 
     ); 
     } 
} 

прикрепил консоль enter image description here enter image description here

+0

В 'checkForError' должно быть' return' перед 'Observable.throw (ошибка)', но это кажется не связанным с вашим сообщением об ошибке. 'map (getJson)' должен быть 'map (this.getJson)'. –

+1

Наблюдаемый ничего не делает до того, как вызывается 'subscribe()'. Поскольку 'subscribe()' fail не может быть запросом. –

+0

Предоставьте некоторый снимок экрана с вкладки сети инструментов dev –

ответ

3

Может быть, вы должны попытаться вернуться назад (или вперед-трек) проблемы:

старт с:

this.http.get('/my/hardcoded/url').subscribe(); 

Проблема может быть в заголовках или в интерполированное URL или в любом месте.

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