2016-06-29 12 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); 
    } 
}  

ich diese Störung erhalte:Property 'toPromise' existiert nicht auf Typ 'beobachtbare <Response>'

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

+2

Normalerweise aktualisieren, es ist keine gute Idee Observablen in Versprechen umzusetzen. Observables sind viel mächtiger – Dinistro

Antwort

152

Sie müssen die Betreiber wie folgt hinzuzufügen:

import 'rxjs/add/operator/toPromise'; 

Dies ist für jeden rxjs-Operator erforderlich, den Sie verwenden möchten.

10

Versuchen Hinzufügen ‚Antwort‘ auf Ihre Import-Anweisung von ‚@ Winkel/http‘ wie folgt aus:

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

Auch ich bemerkt, dass Sie nicht importieren Ingectable aus Winkelkern obwohl Sie @Injectable Dekorateur verwenden .

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

Ich habe auch die systemjs.config.js aktualisiert und folgte den Vorschlägen auf dieser Seite. Jetzt ist es in Ordnung. – MiHawk

+0

Hallo MiHawk, was hast du in der systemjs.config.js ?, ich folge auch die https://angular.io/docs/ts/latest/tutorial/toh-pt6.html, steckte hier fest – khoailang

+0

Also was war die Antwort, es ist nicht angegeben, was dieses Problem behebt –

7

Verwendung dieser Import am Anfang

import {Observable} from "rxjs/Rx";

+2

wirklich schlechte Idee, das importiert die gesamte RXJS-Bibliothek, die wirklich groß ist und Ihre Seitenladezeiten massiv erhöhen wird. – danday74

+0

Ich glaube nicht .. wir verwenden Import {Komponente} von "@ angular/core"; viele Orte richtig, also sollte das auch schlecht sein? –

+3

{Observable} aus 'rxjs/Observable' importieren; ist was du willst ... das wird nur Observable importieren, wenn du rxjs/Rx tust dann wird es alles von RxJS importieren und nur das Observable verwenden, eine echte Verlangsamung. Entfernen Sie alle Verweise auf rxjs/RX und beobachten Sie die massive Reduzierung der Nettoanforderungen und die Geschwindigkeit der Seitenladegeschwindigkeit. – danday74

-2

Für mich die hier markiert richtige Antwort nicht funktioniert und ich war blockiert. Also ging ich durch eine andere link, die darauf hindeutet, dass es ein Problem mit Visual Studio sein könnte. Ich habe versucht, die Option, die sie in der Antwort vorgeschlagen, aber das hat auch nicht funktioniert.

Also ging ich voran und installierte Visual Studio Code. Die Dinge begannen für mich gut zu funktionieren und ich wurde entsperrt. Dies für Leute zu veröffentlichen, die darauf blockiert sind (genau wie ich).

Ich weiß, es ist keine Lösung, sondern nur ein Workaround, um Menschen zu entsperren.

Hoffe, das hilft.

Verwandte Themen