2016-12-16 32 views
8

पर कोई फ़ंक्शन नहीं है, मैं ड्रैग और ड्रॉप एप्लिकेशन बना रहा हूं और मैंने माउस स्थिति में एक अवलोकन योग्य बनाया है, जो मेरे drag-object को पुनर्स्थापित करता है।सदस्यता रद्द करने योग्य

this.mouseMove$.subscribe(); 

लेकिन मैं या तो द्वारा सदस्यता समाप्त नहीं कर पा रहे:

this.mouseMove$.unsubscribe(); 

या

this.mouseMove$.dispose(); 

mouseMove$: any; 

constructor(){ 
    this.mouseMove$ = Observable.fromEvent(document, 'mousemove') 
    .do((mouseevent: MouseEvent) => { 
     if (document.getElementById("drag-object")){ 
     document.getElementById("drag-object").style.left = (mouseevent.clientX) + 'px'; 
     document.getElementById("drag-object").style.top = (mouseevent.clientY) + 'px'; 
     } 
    }); 
इस कार्यान्वयन मैं इस तरह से सदस्यता लेने कोई समस्या नहीं है के साथ

किसी भी मामले में मुझे मिलता है त्रुटि के निम्नलिखित प्रकार:

TypeError: this.mouseMove$.unsubscribe is not a function ...

मैं अगर यह any की mouseMove$ प्रकार से कोई लेना देना नहीं है, लेकिन Observable के रूप में प्रकार की स्थापना और Observable<MouseEvent> काम नहीं किया यकीन नहीं है। मैं यहाँ क्या समझ नहीं रहा हूँ?

उत्तर

15

आप शायद RxJS, जहां एक एपीआई परिवर्तन जहां Observable.subscribe रिटर्न एक Disposable, जिसमें से आप अब .unsubscribe फोन (dispose RxJS5 में unsubscribe बन गया) कर दिया गया है के एक नए संस्करण का उपयोग कर रहे हैं। दुर्भाग्यवश अभी भी पुराने पुराने ट्यूटोरियल और ब्लॉग पोस्ट हैं जो इसे "पुराना तरीका" कर रहे हैं, जिसके परिणामस्वरूप यह भ्रम है।

इस प्रकार, अपने कोड

let disposeMe = this.mouseMove$.subscribe(); 

जाँच this file होना चाहिए और, के बाद आप से 5

disposeMe.unsubscribe(); 

काम हो गया संस्करण 4 से एपीआई परिवर्तन की एक पूरी सूची के लिए,।

3

सुनिश्चित करें कि आपके this.mouseMove$ एक नमूदार पहले है:

if (this.mouseMove$ !== undefined) { 
    this.mouseMove$.unsubscribe(); 
} 

शायद आपके मामले में, आप सदस्यता समाप्त this.mouseMove$ से पहले अभी तक कोई मूल्य सौंपा नहीं गया है।

-2

brianflove.com पर एक नज़र डालें।

माउसमोव $ सेट करके: सदस्यता, इस मुद्दे का ख्याल रखना चाहिए।

+0

क्या आप मूल विवरण के साथ उत्तर को संशोधित कर सकते हैं? – Sergii

+0

"माउसमोव $: किसी भी" का उपयोग करने के बजाय, डेटा प्रकार को सदस्यता के लिए घोषित करें, जो त्रुटि आप देख रहे हैं उसे हटा देंगे। – Roger

संबंधित मुद्दे