Control Value Accessor in Angular [Advanced, 2020]

Поделиться
HTML-код
  • Опубликовано: 4 авг 2024
  • 🔥🔥🔥 You can get more in-depth knowledge about ControlValueAccessor & Angular Forms in my brand-new advanced course bit.ly/advanced-angular-forms 🔥🔥🔥
    In this advanced tutorial, we will learn what is Control Value Accessor in Angular and we will have a look at how to make any Angular component or directive behave as a form control. It is quite easy to achieve with Angular Control Value Accessor and it will allow us to go beyond just regular forms and build more complex forms and form fields which we going to build in the following few lessons. I am pretty sure that you will use it a lot in your applications and it will allow you more lean and maintainable code. I hope you will find it useful. Thank you for your attention and enjoy watching :)
    📣 Become a Pro in Angular Material Theming (Advanced Workshop) 📣
    bit.ly/angular-material-themi...
    ✅ Use 10%-off coupon code: RUclips_DISCOUNT (Only 2 coupons left)
    📣 Blazing fast GraphQL Backend just in 1 Day with Hasura Engine 📣
    bit.ly/complete-hasura-course
    ✅ 20%-off coupon code: HASURA-EASY-START
    🕒 Time codes:
    00:00:00 - Intro
    00:00:48 - My annoying talking ends here ;)
    More videos about Angular Material Library:
    • Angular Material
    More videos about Angular Material CDK:
    • Angular Material CDK
    🔗 Links:
    Link to GitHub repo:
    github.com/mezhik91/angular-c...
    #webdevelopment #angularmaterial #angular
  • НаукаНаука

Комментарии • 135

  • @DecodedFrontend
    @DecodedFrontend  Год назад +1

    🔥🔥🔥You can get more in-depth knowledge about Angular Forms and learn how to build really complex form controls with my brandnew course about Advanced Angular Forms bit.ly/advanced-angular-forms 🔥🔥🔥

    • @GinoBarisciano
      @GinoBarisciano Год назад

      Great course, really interesting. Too bad there are no captions and subtitles, not even in english, for the video lessons otherwise I would have bought it right away. 😢

  • @user-vf6ng9pi9r
    @user-vf6ng9pi9r 3 года назад +31

    Internet is filled with beginner tutorial.
    But your content is advanced angular.
    Kindly continue the series

  • @lukindombuli2338
    @lukindombuli2338 3 года назад +10

    I am ashamed to say that I never really understood the control value accessor in my +2 years of angular career, you explained it really well, thank you!

  • @DecodedFrontend
    @DecodedFrontend  4 года назад +14

    I hope this video will bring some new knowledge for you today. Share this video with your colleagues if you find it useful, subscribe to my channel and of course leave your feedback :) Have a great day!

  • @JBuchmann
    @JBuchmann Год назад

    Perfect, thank you! I love your step-by-step approach that slowly builds up until it's finished. I finally understand this topic!

  • @littlegreencactus
    @littlegreencactus 7 дней назад

    Although this video is already 4 years old, it is still very helpful, easy to follow and compatible with the latest angular(18) version. Thank you very much!

  • @GLawSomnia
    @GLawSomnia 3 года назад +16

    Man your content is great. I love how the topics are a little more advanced but you still explain them clearly. Keep up the good work👍👍

  • @vagrawa1
    @vagrawa1 3 года назад +1

    This is the place to learn complex angular topics!!!! Thank you so much!!!!

  • @MarcoPinheiro
    @MarcoPinheiro Год назад +1

    Thank you very much, really enjoyed learn this new bit!!

  • @mariannabelniok1079
    @mariannabelniok1079 2 года назад

    Your explanation was excelente! I finally understood control value accessor.
    Thank you so much

  • @AnthonyDev
    @AnthonyDev 2 года назад +1

    Great explanation, now I understand CVA. Thanks!

  • @elenavinokurova5578
    @elenavinokurova5578 Год назад

    Such a great explanation, thank you for your work!

  • @leonbenjamin7891
    @leonbenjamin7891 3 года назад +1

    Excellent guide! Thanks!

  • @innocentmazando3808
    @innocentmazando3808 Год назад

    Each time I build a custom control I do it playing this video behind the scenes. Thanks @Dymitro, you made me good at work :)

  • @muratfaizmf
    @muratfaizmf 2 месяца назад

    This tutorial helped me a lot. Thanks!

  • @musafir_1194
    @musafir_1194 10 месяцев назад

    Great work man. I know angular and worked on it. But the way you cleared the concept in depth I'm in love with angular. Keep growing brother. 🙂

  • @eduardohernandezanzardo1378
    @eduardohernandezanzardo1378 2 месяца назад +1

    Great video, you solve me some questions about this control value accessor implementation, thanks for sharing, best regards from cuba.

  • @IngvarLosev
    @IngvarLosev Год назад

    Great lesson! Thank you.

  • @prabuk3819
    @prabuk3819 2 года назад

    You may not know, How much you are helping us. Thank you.

  • @lindermannla
    @lindermannla 2 года назад

    Another excellent tutorial! Congratulations!

  • @tarasshevchuk8477
    @tarasshevchuk8477 5 месяцев назад

    Thank you for such a good explanation!

  • @JoshDeveloper
    @JoshDeveloper 2 года назад

    awesome, keep it up man !!!

  • @user-mh1br9uj1t
    @user-mh1br9uj1t 2 года назад

    Thank you for high quality content!

  • @ladydanih
    @ladydanih 3 года назад +3

    Amazing tutorial! You explain things in a very easy way to understand, thanks =)

  • @waleedjubeh5955
    @waleedjubeh5955 2 года назад +1

    this is amazing. Thanks

  • @AiguretDuren
    @AiguretDuren Год назад

    So thoroughly well done!

  • @Billiam112
    @Billiam112 3 года назад +1

    Great stuff! 👌

  • @MAziz-hs7ux
    @MAziz-hs7ux 3 года назад

    It was very useful for me. Thanks you so much!

  • @nixonnelson8856
    @nixonnelson8856 3 года назад +2

    Thanks Dude , ur content is full of stuff i always wanted to understand but never found any content like yours , Thanks a lot

  • @parwindersingh6773
    @parwindersingh6773 Год назад

    nice.. haven't found any tutorial who can explain this at this level.. Keep up

  • @larhchimismail3399
    @larhchimismail3399 Год назад

    it was so useful for me thank you again

  • @niclerck8646
    @niclerck8646 Год назад

    good explanation 🔥, you really save my time thanks

  • @gishanabeysinghe977
    @gishanabeysinghe977 4 года назад +4

    Very clear. Thank you.

  • @beodan9219
    @beodan9219 Год назад

    Greate,Thanks so much!

  • @getellied
    @getellied Год назад +1

    Awesome content! I was bashing my head against a wall yesterday trying to get this to work, guess I didn't understand the API. You made it very clear and I was able to implement what I needed. Thank you so much!

    • @DecodedFrontend
      @DecodedFrontend  Год назад

      Thanks for your feedback!I happy to hear that even quite old video became helpful

  • @empathetic24671
    @empathetic24671 Месяц назад

    Thanks man, you are true genius🔥

  • @user-qr6jc9wi9l
    @user-qr6jc9wi9l 6 месяцев назад

    Thank you very much!

  • @fromtheotherlane369
    @fromtheotherlane369 2 года назад

    at first it was slow spaced but you made it so easy to understand! thank you!

  • @MohamedAbdulRaouf
    @MohamedAbdulRaouf 2 года назад

    like alway, great topic 💝
    thank you

  • @avijitghosh9472
    @avijitghosh9472 Год назад +1

    This feature is explained masterfully. Thanks man. 💯

  • @rahultej8352
    @rahultej8352 3 года назад

    u r best technically and in terms of explanation

  • @a.n.m.atiqurrahman2651
    @a.n.m.atiqurrahman2651 3 года назад +1

    Very helpful video with nice explanation. Please carry on with such amazing videos.

  • @naveenbarith
    @naveenbarith 3 года назад +1

    Awesome explanation buddy! Subscribed immediately.. thank you. Pls do these kind of tutorial 👌

  • @Powerful-Manifestor-
    @Powerful-Manifestor- 2 года назад +1

    Awesome explanation!

  • @collinsk8754
    @collinsk8754 Год назад

    👍👍 Definitely🔥. Thanks.

  • @kernusthefernus
    @kernusthefernus 3 года назад +1

    this is amazing ! thank you so much

  • @SergAlexson
    @SergAlexson 3 года назад

    Very useful lesson, thanks!

  • @dubeykivines9202
    @dubeykivines9202 3 года назад +1

    Thanks for great video brother, Hats off

  • @arpanpatel5680
    @arpanpatel5680 3 года назад +1

    Very informative and useful. Thank you dmytro

  • @kashishchaudhary4330
    @kashishchaudhary4330 3 года назад +1

    Hey Thanks For this noteWorthy tutorial, helped a lot. Please CarryOn going great.
    From India 🎯

    • @DecodedFrontend
      @DecodedFrontend  3 года назад

      I’m happy to hear that the video helped you! 😊 thanks for feedback!

  • @armenstepanyan2954
    @armenstepanyan2954 Год назад

    Very good content

  • @syimykamatov8955
    @syimykamatov8955 3 года назад +1

    Thank u. U make not not ordinary content

  • @atulgupta426
    @atulgupta426 3 года назад

    Nice Video... and Clear the concept
    Keep it up!
    May I know your VS Code settings and Extension list which you are used for Angular developer.
    Thanks

  • @uidhtml
    @uidhtml 2 месяца назад

    Very nice video Dmytro, I am a big fan of yours. Keep making such valuable videos. I have one topic for you. Can you explain MAT_INPUT_VALUE_ACCESSOR of material Input? I am confused about its uses and how it is working under the hood and how can we get benefit after providing in providers.

  • @AnuragTiwari-wn2mg
    @AnuragTiwari-wn2mg 2 года назад +1

    Can you please let me know how we can do same for a dropdown which works same as ng-select ?

  • @MhmmDonuts
    @MhmmDonuts 3 года назад +1

    I'm new to angular and never had to use this before cause normally I am a c#. Net dev. But your Video was realy easy to understand. U helped me a lot geetz from dev to dev 👍😉

    • @DecodedFrontend
      @DecodedFrontend  3 года назад

      Awesome! I am happy to hear that my video helped you to make things clearer. I wish you good luck with Angular! it is a great framework ;)

    • @MhmmDonuts
      @MhmmDonuts 3 года назад

      @@DecodedFrontend im Realy surprised from Angular it realy is by far the best frontend framework so far

  • @igorparampam5984
    @igorparampam5984 7 месяцев назад

    cool👍

  • @estevesporai2758
    @estevesporai2758 2 года назад

    Awesome video! I'm using control.setValue(value i want) and it's firing writeValue, hence which method is called when I call setErrors or even markAsTouched?

  • @nikitachensov6174
    @nikitachensov6174 2 года назад

    Great explanation and work. Keep it up!!!! Any way to donate money for your work ?

  • @naveenpisher6928
    @naveenpisher6928 3 года назад

    Thank you for this video, I have one doubt! How we capture events like onblur, on key up, key press??

  • @frontend3409
    @frontend3409 Год назад

    Best explanation of Control Value Accessors on the web, but i still don't know what multi: true does. Angular documentation is as "good" as in Control Value Accessors docs.

  • @VIGILANTORX
    @VIGILANTORX 3 года назад +1

    Well done bro
    Best explanation ever
    Can u make video for observable and promises why when and how to use them.

    • @DecodedFrontend
      @DecodedFrontend  3 года назад

      Thank you! Glad you like it :)
      Maybe later on I create something about rxjs. So far I can say that try to avoid promises in Angular apps and prefer Observables and think twice before bringing RxJs somewhere else (React app as example) 😄

  • @iamtrinhchau
    @iamtrinhchau 9 месяцев назад

    Could you please make a video about CVA and Angular Material? Seem the mat-error doesn’t work well when I use CVA

  • @MatiasHerm
    @MatiasHerm 4 года назад +3

    Hello, on your next video could you possibly talk about implementing ControlValueAccessor together with MatFormFieldControl (Angular Material)? I think the most challenging part is to get it to work with the errorState when using validators.

    • @DecodedFrontend
      @DecodedFrontend  4 года назад

      Hi! Great feedback, thank you! Exactly ControlValueAccessor together with MatFormFieldControl will be covered in 3rd part :)
      Could you please tell me more what is exactly challenging for you in errorState? Actually errorState was not initially included but maybe I will adjust my video script and cover it as well or create separate video if this topic will be too big.

    • @MatiasHerm
      @MatiasHerm 4 года назад

      @@DecodedFrontend binding NgControl's error property with the errorState attribute, so that the component would turn red if there was a validation that is not met.

  • @ttbooster
    @ttbooster 2 года назад

    How about inheriting validators? I get cyclic validation DI errors with ngControl..

  • @rahultej8352
    @rahultej8352 3 года назад

    Is there chance there the value in template and Formcontrol could be different?

  • @MiguelSanchez-mo5ly
    @MiguelSanchez-mo5ly 3 года назад

    Would it be wrong to call onChange inside the writeValue function?

  • @surajbande5841
    @surajbande5841 2 года назад

    @decoded front end
    I want small suggestion
    Best practice for api request response encryption in angular or react.
    Please share any useful link if you have 🙈.
    Thank you!

  • @OldProGaming
    @OldProGaming 2 года назад

    Instead of calling setValue on click, could we override setter for 'value' property?

  • @user-wu6nf4xl7s
    @user-wu6nf4xl7s 4 месяца назад

    Can you create a video on the following topic or at least suggest a way of implementing it:
    The scenario: 1 page component which has 2 children: First child is a complex component with a lot of children and deep inside one of them there is a generic reusable component which holds a reactive form. The second child of the page component is another form which again is used on multiple places. However exactly on this page component there should be a sync between the two forms (the form from the second component should check the validity of the other deep nested form before being submittable). I have tried to create a service, which is provided on a root level and to store the reference of the deep nested form there. It seems to work but I believe that there are better ways of achieving this, since each time this component is used on different places the reference of the form within the service is being replaced.
    BTW you content is amazing! Keep up with the good work!

  • @VendettaUkraina
    @VendettaUkraina 3 года назад +2

    Very clear. Thanks, what about errors, or valueChanges ?

    • @DecodedFrontend
      @DecodedFrontend  3 года назад

      Hi! valueChanges is being triggered every time you call onChange function. Error handling I have partly covered in this video: ruclips.net/video/AZsw2nRxkBk/видео.html

  • @jayampathiweerasinghe6018
    @jayampathiweerasinghe6018 3 года назад +1

    Great Video. Clear explanation. Can we use this control value Accessor with a component which can return multiple values with multiple inputs. Ex : date range with 2 datePickers or address component with several text boxes . Thanks !!! :)

    • @DecodedFrontend
      @DecodedFrontend  3 года назад

      Hi, Thanks!
      I am not sure that I understand completely your case but the value of your control accessor might be object where you can store as many values as you need :)

  • @i-heart-google7132
    @i-heart-google7132 3 года назад

    When you moved the writeValue() into setValue() it didn't set to the correct value at the beginning. Or am I missing something?

  • @ragucool9468
    @ragucool9468 2 года назад +1

    How to make reusable component in angular ? Kindly make video bro.... thanks advance . Videos simply super

    • @DecodedFrontend
      @DecodedFrontend  2 года назад

      Wow, damn... I thought I was an expert in dürüms but it looks like am just a stupid newbie!!! :D Thank you, that was indeed very interesting👍

  • @DecodedFrontend
    @DecodedFrontend  3 года назад +3

    🔥🔥🔥Do you want to master *Angular Material Themes* like a PRO? Check out my new Workshop where you will find a lot of advanced tips & tricks which will help you to make your themes maintainable, lean & consistent! Limited 50%-off discount is about to expire very soon: 🔗 bit.ly/angular-material-theming-workshop 🔥🔥🔥

  • @Billiam112
    @Billiam112 2 года назад +1

    Do you have anything on the control container? Could be a topic for the future if not perhaps. :)

    • @DecodedFrontend
      @DecodedFrontend  2 года назад

      Hi Bill! What do you mean by "control container"? :)

  • @TheSaceone
    @TheSaceone 2 года назад

    OnPush change detection strategy does not work using control value accessor? Because the form value change is not an input change, nor an event triggered in the custom control component

    • @DecodedFrontend
      @DecodedFrontend  2 года назад

      Yes, indeed. If you use onPush then you have to mark the component as “dirty” using markForCheck in the cases you described (e.g in writeValue() method)

  • @sadakochan12
    @sadakochan12 3 года назад +2

    Great video!! Super super helpful as ive been struggling with this for a while!
    On an unrelated note, what snippet are you using for that console.log? That's super neat and I would love to use it!

    • @DecodedFrontend
      @DecodedFrontend  3 года назад +4

      Hi! I am happy to hear that my video helped you to figure out this topic 😉
      Regarding console.log, I use an extension for VS Code marketplace.visualstudio.com/items?itemName=ChakrounAnas.turbo-console-log . Enjoy using it, it is really helpful extension

  • @techVinay933
    @techVinay933 3 года назад

    Hi, can you please provide me a source code. I've reading your tutorial and I have getting this error on clicking a clock icon. =>
    ERROR TypeError: this.onChange is not a function
    at LockInputComponent.setValue (lock-input.component.ts:46)
    at LockInputComponent_Template_mat_icon_click_2_listener (lock-input.component.html:2)
    at executeListenerWithErrorHandling (core.js:15272)
    at wrapListenerIn_markDirtyAndPreventDefault (core.js:15310)

  • @techVinay933
    @techVinay933 3 года назад

    Hi, can you please provide me a source code. I've reading your tutorial and I have getting this error on clicking a clock icon. =>
    ERROR TypeError: this.onChange is not a function

  • @fnujensonsamuel4361
    @fnujensonsamuel4361 3 года назад

    Can you do one on Injection Token please? ReflectiveInjectionToken, etc.

  • @mousikeanurag7519
    @mousikeanurag7519 Год назад

    Nice , But why it won't works if im using it as angular element ?

  • @murilloluisi
    @murilloluisi 2 года назад +2

    teach us how to create our own mask, without any npm packages, please!!

  • @raptorthefirst
    @raptorthefirst 2 года назад

    Дякую, це було корисне відео

  • @brawnyvenky9584
    @brawnyvenky9584 3 года назад +1

    thanks for the video. do you have the starter files project for this.

    • @DecodedFrontend
      @DecodedFrontend  3 года назад

      The repo you can find here github.com/DMezhenskyi/angular-cdk-lessons
      You can go to commits and rollback to the commit before the control value accessor example :)

    • @brawnyvenky9584
      @brawnyvenky9584 3 года назад

      @@DecodedFrontend thank you

  • @techguru3057
    @techguru3057 2 года назад +1

    I didn't get lock logo,it displaying only words

    • @DecodedFrontend
      @DecodedFrontend  2 года назад

      It looks like you have to include this line in your index.html and restart app:

  • @utsavsharma2979
    @utsavsharma2979 2 года назад

    Do you have a FB group where we can post our querries.

  • @pdela72
    @pdela72 3 года назад +1

    Please zoom In vs code as on mobile is unreadable

    • @DecodedFrontend
      @DecodedFrontend  3 года назад

      Thank you, Paolo! I will keep in mind it next time 👍

  • @sidikithomas9650
    @sidikithomas9650 2 года назад

    I didn’t get it the what and why

    • @JBuchmann
      @JBuchmann Год назад

      It's so you can make your own CUSTOM form control (a component) that fits in with the parent's formGroup, along with all your regular form controls. You now you can use your custom control just like you would, say, a regular textbox.

  • @cdc_ua
    @cdc_ua Год назад

    Like from Ukraine

  • @aram5642
    @aram5642 3 года назад

    Dear friend, it is ACcessor not acCESsor.

  • @JavierAcrich
    @JavierAcrich Год назад

    Your pronunciation of the word 'value' is a little strange.

  • @Dr.Wizard47
    @Dr.Wizard47 2 года назад

    would be better if you start from beginning,.......Not good beginners ,........Beginner people dont watch

  • @valikonen
    @valikonen 11 месяцев назад

    Useful but this is the most ugly API from any framework. Whatever, thanks!

  • @onetwothree123-
    @onetwothree123- Год назад

    06:06 😅😅😅

  • @techVinay933
    @techVinay933 3 года назад +1

    Hi, can you please provide me a source code. I've reading your tutorial and I have getting this error on clicking a clock icon. =>
    ERROR TypeError: this.onChange is not a function

    • @DecodedFrontend
      @DecodedFrontend  3 года назад

      Hi! The link to source code you can find in the video description

  • @techVinay933
    @techVinay933 3 года назад

    Hi, can you please provide me a source code. I've reading your tutorial and I have getting this error on clicking a clock icon.
    ERROR TypeError: this.onChange is not a function
    at LockInputComponent.setValue (lock-input.component.ts:46)
    at LockInputComponent_Template_mat_icon_click_2_listener (lock-input.component.html:2)
    at executeListenerWithErrorHandling (core.js:15272)
    at wrapListenerIn_markDirtyAndPreventDefault (core.js:15310)