2016-04-22 12 views
9

Mi chiedo se mi iscrivo per lo streaming nel mio costruttore in questo modo:Devo annullare l'iscrizione ogni volta onDestroy nel componente?

_eventEmitterService.event.subscribe((msg)=>{}) 

Così quando cambio la fine di altro componente, e torno, gli eventi vengono attivati ​​due volte da quel flusso. Devo annullare l'iscrizione ogni volta che cambio il componente, usando ngOnDestroy?

Grazie

+1

Sì che fate. Ti avrei dato il link dove afferma che nella documentazione, ma non riesco a trovarlo più – PierreDuc

risposta

12

L'ho trovato! E sì, per la documentazione come indicato nel angular2 lifecycle-hook guida:

ngOnDestroy
Cleanup poco prima angolare distrugge la direttiva/componente. Cancellare le osservabili e staccare i gestori di eventi per evitare perdite di memoria.

Quindi sì, è necessario annullare l'iscrizione a osservabili sul ngOnDestroy()

5

Solo un suggerimento ulteriore grande risposta del Pierre. La pipe async annulla automaticamente gli osservabili su cui è applicata. Quindi è necessario annullare l'iscrizione per gli osservabili gestiti da soli.

Vedi questa riga nel codice sorgente:

+0

Link Github è morto ora. Potresti espanderti un po 'di più, la tua risposta sembra contraddire un po' Pierre, quindi non sono sicuro di dover effettuare una pulizia manuale? Il tutorial ufficiale angolare non esegue alcuna pulizia per quanto posso vedere. – Davor

Problemi correlati