2016-06-29 11 views
64
import { Headers, Http } from '@angular/http'; 

@Injectable() 
export class PublisherService{ 

    private publishersUrl = 'app/publisher'; 

    constructor(private http: Http) { } 

    getPublishers(): Promise<Publisher[]>{ 
     return this.http.get(this.publishersUrl) 
        .toPromise() 
        .then(response => response.json().data) 
        .catch(this.handleError); 
    } 
}  

otrzymuję ten błąd:własność 'toPromise' nie istnieje w rodzaju 'obserwowalnych <Response>'

Property 'toPromise' does not exist on type 'Observable'.any

+2

Normalnie, to nie jest dobry pomysł, aby przekształcić obserwable na obietnicach. Obserwowalne są o wiele potężniejsze – Dinistro

Odpowiedz

152

Trzeba dodać operatorowi tak:

import 'rxjs/add/operator/toPromise'; 

Jest to potrzebne dla każdego operatora RxJ, którego chcesz użyć.

10

spróbuj dodać „odpowiedź” do wyciągu import z „@ kątowe/http” tak:

import {Http, Headers, Response} from '@angular/http'; 

Również zauważyłem, że nie importować Ingectable z kątowym rdzenia chociaż użyć @Injectable dekorator .

import { Injectable } from '@angular/core'; 
+0

Zaktualizowałem również systemjs.config.js i zastosowałem się do sugestii na tej stronie. Teraz jest w porządku. – MiHawk

+0

hi MiHawk, co zaktualizowałeś w systemjs.config.js ?, a także https://angular.io/docs/ts/latest/tutorial/toh-pt6.html, utknąłem tutaj – khoailang

+0

Co z tego? było odpowiedzią, nie podano co naprawia ten problem –

7

użycie tego importu na początku

import {Observable} from "rxjs/Rx";

+2

naprawdę zły pomysł, to importuje całą bibliotekę RXJS, która jest naprawdę duża i znacznie zwiększy czas ładowania strony. – danday74

+0

Nie sądzę ... używamy importu {component} z "@ angle/core"; wiele miejsc w porządku, więc to też powinno być złe? –

+3

import {Observable} from 'rxjs/Observable'; jest to, co chcesz ... to zaimportuje tylko obserwowalne, jeśli zrobisz rxjs/Rx, to zaimportuje cały RxJS i użyje tylko Observable, prawdziwego spowolnienia. Usuń wszystkie odniesienia do rxjs/RX i obserwuj ogromną redukcję żądań netto i przyspieszenie prędkości ładowania strony. – danday74

-2

dla mnie, poprawnej odpowiedzi oznaczonej tu nie działa, a ja zablokowany. Przeszedłem więc przez kolejne link sugerujące, że może to być problem z Visual Studio. Wypróbowałem opcję, którą zaproponowali w odpowiedzi, ale to też nie zadziałało.

Tak, poszedłem do przodu i zainstalowałem kod Visual Studio. Wszystko zaczęło działać dobrze dla mnie i zostałem odblokowany. Zamieszczam to dla osób, które są zablokowane (tak jak ja).

Wiem, że to nie jest rozwiązanie, ale tylko obejście, które pomoże odblokować ludzi.

Mam nadzieję, że to pomoże.

Powiązane problemy