unsubscribe ist keine Funktion auf einer Observablen

9

Ich mache eine Drag & Drop-Anwendung und ich habe eine Observable für die Mausposition erstellt, die mein drag-object neu positioniert.

%Vor%

Mit dieser Implementierung habe ich kein Problem, auf diese Weise zu abonnieren:

%Vor%

Ich kann mich jedoch nicht abmelden:

%Vor%

oder

%Vor%

In beiden Fällen bekomme ich den folgenden Fehlertyp:

  

TypeError: this.mouseMove $ .unsubscribe ist keine Funktion ...

Ich bin mir nicht sicher, ob dies mit dem mouseMove$ Typ von any zu tun hat, aber das Festlegen des Typs als Observable und Observable<MouseEvent> hat nicht funktioniert. Was verstehe ich hier nicht?

    
Nate May 16.12.2016, 19:17
quelle

3 Antworten

19

Sie verwenden wahrscheinlich eine neuere Version von RxJS, wo es eine API-Änderung gab, bei der Observable.subscribe eine Disposable zurückgibt, von der Sie jetzt .unsubscribe aufrufen ( dispose wurde unsubscribe in RxJS5) . Leider gibt es immer noch viele alte Tutorials und Blogposts, die es "auf die alte Art" machen, was zu dieser Verwirrung führt.

Daher sollte Ihr Code

sein %Vor%

und, nachdem du fertig bist

%Vor%

Eine vollständige Liste der API-Änderungen von Version 4 bis 5 finden Sie in dieser Datei .

    
Georg Grab 16.12.2016, 19:55
quelle
4

Stelle sicher, dass dein this.mouseMove$ zuerst beobachtbar ist:

%Vor%

Wahrscheinlich in Ihrem Fall, Sie abmelden, bevor this.mouseMove$ noch keinen Wert zugewiesen wurde.

    
Bo Chen 16.12.2016 19:49
quelle
-2

Werfen Sie einen Blick auf brianflove.com .

Wenn Sie mouseMove $: ISubscription setzen, sollten Sie sich um das Problem kümmern.

    
Roger 26.07.2017 18:32
quelle