DEV Community

loading...

Discussion on: A thorough exploration of Angular Forms

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 Author

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 👍