This question already has an answer here:
Context
I have a simple directive that add some attributes to a given HTML element based on received attributes.
<button class="btn btn-blue x-large" [myDirective]="{ some_json_data: true }">
Unfold
</button>
The myDirective
directive just does some logic in the ngOnInit
hook and decorates the ElementRef
native element (in this case the button) adding attributes, nothing complicated.
ngOnInit(): void {
const el: Element = this.element.nativeElement;
this.decorate(el, this.myDirective);
}
Problem
Based on a given logic (in myDirective
decoration) I want to add a tooltip (which is another directive) to the element referenced by ElementRef
at myDirective
.
How do I mount a directive manually and how do I add it to an element (ViewContainerRef)?
Adding or removing directives dynamically is not supported. Only components can be added and removed dynamically (only dynamically added components can be removed dynamically).
You do not add or remove directives dynamically, but if you want to add a tooltip you have to insert a div in your component template that activates it depending on a variable status
<div [hidden]="tooltipnotshown"
class="tooltip">
blah blah or whatever ...
</div>
来源:https://stackoverflow.com/questions/45084292/dynamically-mount-angular-2-directive