The new DestroyRef Provider in Angular 16 (2023)

Sdílet
Vložit
  • čas přidán 27. 07. 2024
  • 💥 Become a PRO with my in-depth Angular Forms Course💥
    🔗 10% discount for the first 10 students - bit.ly/advanced-ng-forms-disc...
    The Angular 16 is out which brings a myriad of new cool features and one of such features is a new injectable entity called DestroyRef that you can inject into any Angular building block like component or service and register a callback that will be executed when this scope is destroyed. Sounds like the ngOnDestroy lifecycle hook, right? Exactly! In this video, we will try to figure out what is the difference between those 2 options and which additional options give us the brand-new DestroyRef token.
    🕒 Time Codes:
    00:00:00 - Intro;
    00:01:11 - Basic use cases and differences with ngOnDestroy hook;
    00:07:25 - How it is used in takeUntilDestroyed;
    00:11:18 - Outro;
    💡 Short Frontend Snacks (Tips) every week here:
    Twitter - / decodedfrontend
    Instagram - / decodedfrontend
    LinkedIn - / dmezhenskyi

Komentáře • 44

  • @DecodedFrontend
    @DecodedFrontend  Před rokem +1

    💡 Short Frontend Snacks (Tips) every week here:
    Twitter - twitter.com/DecodedFrontend
    Instagram - instagram.com/decodedfrontend
    LinkedIn - www.linkedin.com/in/dmezhenskyi

  • @MrKOHKyPEHT
    @MrKOHKyPEHT Před rokem +5

    0:33 that was exact my reaction :D

  • @gonzalocorchon6509
    @gonzalocorchon6509 Před rokem +7

    Another great video, you never fail to surprise me with your content. You're becoming the "source of truth" in the Angular world.

  • @souravjana8312
    @souravjana8312 Před 9 dny

    Great video. clear everything now

  • @chengxiaoxia8046
    @chengxiaoxia8046 Před rokem +2

    Thanks so much. You continue uploading great tutorial videos. You always give a clear explanation of the abstract concept. Your pronunciation becomes far better than one year ago. Congrats

    • @DecodedFrontend
      @DecodedFrontend  Před rokem

      I am glad to hear that! Thank you for the feedback 😊

  • @innocentmazando3808
    @innocentmazando3808 Před rokem +1

    Thanks for a great lesseon @Dmytro.
    Thanks for giving us the context on the use case of the DestroyRef, cant wait to push our company projects to Angular v16 to try this staff

  • @malekitani3136
    @malekitani3136 Před rokem +1

    nice indepth explanation, thank you. keep it up

  • @PauloSantos-yu1tn
    @PauloSantos-yu1tn Před rokem +1

    Very cool new features.

  • @chekitdnb
    @chekitdnb Před rokem +2

    Thanks

    • @DecodedFrontend
      @DecodedFrontend  Před rokem

      Thank you for your support! I appreciate it soo much :)

  • @ilyatelefus3647
    @ilyatelefus3647 Před rokem +1

    Great video as always 👍🏼

  • @volodimiryemshyn715
    @volodimiryemshyn715 Před rokem +1

    good approach thanks you for your examples

  • @MrKOHKyPEHT
    @MrKOHKyPEHT Před rokem +1

    I should definitely add this video into favourites. Too much useful information for me. Especially considering that our project gonna be updated to Angular v16

  • @chengxiaoxia8046
    @chengxiaoxia8046 Před rokem +1

    Merci!

    • @DecodedFrontend
      @DecodedFrontend  Před rokem

      Wow, thank you so much for your support 🙏 it is invaluable 😊

  • @demidovmaxim1008
    @demidovmaxim1008 Před rokem +1

    Thank you for this video!

  • @magda77850
    @magda77850 Před rokem +4

    takeUntilDestroyed is something we really needed to remove a lot of boilerplate code :D

  • @huytranthanh9029
    @huytranthanh9029 Před rokem +1

    time to drop some 3rd libs, thank you for sharing

  • @loko1944
    @loko1944 Před rokem +2

    As always tons of awesome info and as always I learned something completely not relevant to this topic. Didn't know we can call baseComponent's method by using super....
    I think this is the problem for many self learners - sometimes we just miss something completely

  • @krzysztofprzybylski2750
    @krzysztofprzybylski2750 Před rokem +1

    Nice feature. And a useful one. Also a great explanation! I have a question though: I was taught to use "subscription.add(observable)" and then call "subscription.unsubscribe()" in ngOnDestroy. That is all instead of "takeUntill" pattern. Is there a difference between those two? If so then what is it and why use one over the other?

    • @innocentmazando3808
      @innocentmazando3808 Před rokem

      Hey, not Dymtro here but here is my 2 cents. So takeUntil can be used even in instances where you do not want to destroy the component specifically.
      Last time I did so was when I was refreshing a page by button clicks. So when I click the refresh button the system had to stop all running http calls to the backend and restart again. So on the forkJoin making the calls I piped the takeUntil such that when I click the button, the subject emits first then calls cancel and then I would run the fetches again.
      In short, takeUntil allows you to destroy observables even without destroying the component

  • @luischavez190
    @luischavez190 Před rokem +1

    That intro 😂 good explanation thanks

  • @user-wp6ws1xp8y
    @user-wp6ws1xp8y Před rokem

    Which is better to use: takeUntilDestroyed() or DestroyRef, and why?

  • @pdela72
    @pdela72 Před rokem +1

    Will certainly experiment with this later today, but do you already know if destroyref can be used inside any class (non angular decorated class, not a component, nor directive, etc.) like i e. a User class, to perform clean up logic when the class instance is destroyed?

    • @DecodedFrontend
      @DecodedFrontend  Před rokem +3

      As far as I know it won't work with a regular class. You would need to annotate it with @Injectable() because otherwise you won't be able to inject into this class anything (including the DestroyRef)

    • @pdela72
      @pdela72 Před rokem

      @@DecodedFrontend Thanks. Haven't tried myself yet, but I bet you are right. I'm using classes that extends FormGroups or FormArray to encapsulate business logic in it. Sometimes I have to subscribe to observables inside the class, thus I have the problem of manually unsubscribing from outside the class when a control is removed from the form... Do you think decorating them as @Injectable could lead to performance issues? I might have several of these controls in a single form.

  • @shayanghazali
    @shayanghazali Před rokem

    i have a question and it is not about this video.
    - how can i make @angular/core package local in my angular project and use it as a local package in my project? , so that i can discover more in it also work on it

  • @kramatanga
    @kramatanga Před 10 měsíci

    How to open rxjs operators implementation code ?

  • @gagiksimonyan3782
    @gagiksimonyan3782 Před rokem +1

    Thanks for another useful video, Dmytro and especially for Khaby Lame part)

  • @chandanamadurangamunasingh6498

    Hey, is it reasonable to move to Angular 16, Do all libraries support Angular 16

  • @brucearmstrong5536
    @brucearmstrong5536 Před rokem

    idk what they are trying to do with this feature though to be honest,
    reducing boilerplate ?
    the custom function .onDestroy for this reference feature is unnecessarily complex to be frank
    hope they dont remove onDestroy lifecycle hook
    i don't mind adding a boiler plate for subject and function

  • @03mylol
    @03mylol Před rokem +1

    how does destroyRef understands when to destroy? For example, at the 4:58, we use it as outter function but it somehow understands when our component destroyed

    • @DecodedFrontend
      @DecodedFrontend  Před rokem +1

      it is because inject() function is called in context of component and tries to resolve the "closest" provider for DestroyRef token which comes from component injector, so it gets the reference to the DestroyRef accosiated with this component.

  • @mkez001
    @mkez001 Před 2 měsíci +1

    Why don't we need to put DestroyRef in providers array?

    • @DecodedFrontend
      @DecodedFrontend  Před 2 měsíci +1

      Angular resolves it automatically under the hood, so you don't have to provide it manually each time. The same is true for ViewContainerRef, ElementRef, and some other tokens.

  • @adambickford8720
    @adambickford8720 Před rokem

    Maybe I'm missing something, but this feels terrible. It's basically inheritance in disguise and now mandates angular for even simple object creation due to injection coupling.

  • @pedrinhofernandes
    @pedrinhofernandes Před rokem +1

    It's is a good "native" replacement for www.npmjs.com/package/@ngneat/until-destroy
    Looking forward to replace it once our project migrates to v16