I know that in ng2 we have ComponentFactoryResolver
that can resolve factories that we can apply to a ViewContainerRef
.
But, is there something similar for directives? a way to instantiate them and apply them to the projected content from a component?
No, directives can't be added or removed dynamically. They are only applied to HTML statically added to component templates.
What you could do is to enable/disable the directive by passing a parameter (@Input()
) to the directive to notify it to do something or not.
It's not impossible. It's just ugly and error prone. Basic thing to remember is that a directive is first a class. If you can manually get your hands on the stuff the constructor needs, you can simply do something like:
const highlight = new HighlightDirective(...);
Be prepared for possibly running into unexpected behaviors as you will escape Angular's hands.
Read my full answer here on dynamically adding directives.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With