Uno degli aspetti più verbosi dello sviluppo di una applicazione Angular è ricordarsi di eseguire l'unsubscribe delle subscription alla dismissione del componente. Nello script #284 abbiamo visto come eliminare le sottoscrizioni utilizzando la libreria subsink. In questo script risolveremo il problema usando una tecnica diversa.
Quando dobbiamo cancellare le subscription, la pipe async ci porta un grande aiuto, eseguendo il lavoro per noi, ma non tutto il codice eseguito può essere sottoscritto nel template HTML. Ad esempio le operazioni di creazione, aggiornamento e rimozione sono sottoscrizioni eseguite nel codice del component dopo un'interazione dell'utente. Per riuscire a gestire queste sottoscrizioni dobbiamo creare una variabile di tipo Subscription, a questa aggiungere tutte le sottoscrizioni create, e nel metodo ngOnDestroy disporle. E' già troppo noioso e laborioso anche solo leggerlo vero?
Grazie alla libreria ngx-take-until-destroy l'unsubscribe potrà essere eseguito in maniera automatica, al momento della distruzione del componente, dichiarandone l'intenzione all'interno della pipe.
Per l'installazione occorrerà eseguire lo script
npm i ngx-take-until-destroy --save
Per l'utilizzo basterà aggiungere alla pipe della subscription l'operatore fornito dalla libreria.
myLongSubscription() .pipe( tap(x=>console.log), untilDestroyed(this)) .subscribe();
Nel component poi dobbiamo implementare l'interfaccia OnDestroy dato che la funzionalità appena inserita utilizza l'operatore RxJS takeUntil legandolo alla chiamata della metodo ngOnDestroy.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Estrarre dati randomici da una lista di oggetti in C#
Ordinare randomicamente una lista in C#
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Ordine e importanza per @layer in CSS
Referenziare un @layer più alto in CSS
.NET Conference Italia 2024
Le novità di Angular: i miglioramenti alla CLI
Gestire la cancellazione di una richiesta in streaming da Blazor
Usare le collection expression per inizializzare una lista di oggetti in C#
Sostituire la GitHub Action di login su private registry
Hosting di componenti WebAssembly in un'applicazione Blazor static
Usare il colore CSS per migliorare lo stile della pagina
I più letti di oggi
- Utilizzare angular-cli per creare una direttiva in #angular2 https://aspit.co/bft di @sm15455
- le impostazioni sono su #windowslive, quindi basta il liveid per avere tutte le ... http://aspitalia.com/build-win8 #BldWin
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!