2016-04-30 15 views
6

मैं अपने रूट कॉन्फ़िगरेशन में पथ से संबंधित किसी निश्चित घटक के भीतर प्रत्येक पांचवें सेकंड को एक निश्चित फ़ंक्शन निष्पादित करने के लिए एक अवलोकन अंतराल का उपयोग कर रहा हूं।कोणीय 2 - पथ बदलते समय एक अवलोकन योग्य अंतराल को समाप्त करने का सबसे अच्छा तरीका

Observable.interval(5000).subscribe(res => { 
    // Something happens here 
}); 

हालांकि पथ बदलते समय मैं अंतराल को समाप्त करना चाहता हूं। अब यह कार्य को निष्पादित करना जारी रखता है ...

ऐसा करने का सबसे अच्छा तरीका क्या है?

उत्तर

4

आप इस तरह के मामले में सदस्यता (सदस्यता के विधि की वापसी वस्तु) से सदस्यता समाप्त कर सकते हैं:

var subscription = Observable.interval(5000).subscribe(res => { 
    // Something happens here 
}); 

// to be called when the route changes 
subscription.unsubscribe(); 

क्योंकि नमूदार ठंडा है और वहाँ कोई और अधिक सदस्यता, नमूदार निपटारा किया जाएगा ...

सदस्यता रद्द करने के लिए आप अपने घटक में "राउटरऑनडेक्टिवेट" हुक विधि का लाभ उठा सकते हैं। यह हुक है जो आपको रूटिंग संदर्भ में रूट घटक छोड़ते समय बताता है।

अधिक जानकारी के लिए इस लिंक देखें:

+0

यह उचित लगता है, लेकिन मुझे पता है कि जब घटक घटक के भीतर से बदलता है तो मुझे कैसे पता चलेगा? –

+0

सदस्यता रद्द करने के लिए आप अपने घटक में राउटरऑनडेक्टिवेट हुक विधि का लाभ उठा सकते हैं। मैंने अपना जवाब अपडेट किया। –

0

इस हल करने के लिए एक शानदार तरीका एक चर में नमूदार बना सकते हैं और उपयोग करने के लिए है '| async 'पाइप सदस्यता लेने और टेम्पलेट पर मूल्य दिखाने के लिए। सदस्यता रद्द करने के बाद पाइप द्वारा सभी की देखभाल की जाती है।

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