DEV Community

Cover image for A thorough exploration of Angular Forms

A thorough exploration of Angular Forms

Andrei Gatej on January 20, 2020

After delving into the @angular/forms package I've been able to get a better understanding of how things really work under the hood. In this articl...
Collapse
 
dmorosinotto profile image
Daniele Morosinotto

👍 I think that this is THE MORE DETAILED article I've ever read on @angular Forms!
KUDOS for the awesome work @anduser96

PS: maybe I've spotted a little error in the first sample of custom ControlValueAccessor I believe that the provider must call forwardRef to point to CustomInputComponent + use multi: true

{
    provide: NG_VALUE_ACCESSOR,
    useExisting: forwardRef(()=>CustomInputComponent),
    multi: true
}
Collapse
 
anduser96 profile image
Andrei Gatej Angular

Thank you for the kind words!

multi: true is indeed required, I always forget about it.. :)
Thanks for pointing it out! I'll update the article.

If the provider object is provided in the decorator, there is no need for forwardRef. That's because decorators under the hood are functions and you can reference objects that have not been declared before(like CustomInputComponent) and these functions are going to be called at a later point in time.

Here's a TS playground.

A forwardRef example can be seen here.

export const controlNameBinding: any = {
  provide: NgControl,
  useExisting: forwardRef(() => FormControlName)
};

In the above snippet, there is no function declaration that uses the FormControlName class, it's just an object. If you were to simply use useExisting: FormControlName you'd get an error.

Here is a great article that explains forwardRef.

Collapse
 
dmorosinotto profile image
Daniele Morosinotto

Thanks for the clarification 👍

Collapse
 
seangwright profile image
Sean G. Wright

👍👍 wow - that's a ton of in-depth writing. Stuff like this really helps the community. Thanks!

Collapse
 
tonivj5 profile image
Toni Villena

Wow, thanks a lot for this in-depth information!! 👏👏

Collapse
 
travisfont profile image
Travis van der F.

Woah, impressive!

Collapse
 
anduser96 profile image
Andrei Gatej Angular

Thank you! I wrote other articles on Angular and its ecosystem at indepth.dev. There are also other smart and passionate people who write there.

Collapse
 
travisfont profile image
Travis van der F.

For sure! Thanks for all the writings, keep it up 🤓

Collapse
 
riscie profile image
riscie

Thank you so much for this!

Collapse
 
oleksandr profile image
Oleksandr Angular

Very cool, thanks for the article!