Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
148
rated 0 times [  151] [ 3]  / answers: 1 / hits: 15615  / 8 Years ago, fri, may 27, 2016, 12:00:00

I've seen two questions here how to conditionally add and remove attributes on an item (Is it possible to conditionally display element attributes using Angular2?) but my question is if it is possible to add and remove attribute directives ? I am able to add and remove the attribute but Angular does not compile the attribute as an attribute directive but the attribute just sits there doing nothing. Here is an example of 2 tags:



The first one is the one that I am trying to conditionally apply the attribute directive and the second one has it all the time.



Here is the gif:
enter



Here is how I am applying the attribute (maybe there is a different way to apply attribute directive?)



<h1 [attr.colored]=check ? '': null>Testing something</h1>


And here is the directive:



import {Directive, ElementRef} from '@angular/core'
@Directive({
selector: '[colored]',
host: {
'(mouseenter)': 'onMouseEnter()',
'(mouseleave)': 'onMouseLeave()'
}
})

export class colorDirective {
constructor(private el: ElementRef) {
}
onMouseEnter() { this.highlight(yellow); }
onMouseLeave() { this.highlight(null); }

private highlight(color: string) {
this.el.nativeElement.style.backgroundColor = color;
}
}


Edit: There are couple answers but they are for AngularJS (1)


More From » angular

 Answers
69

That is not supported. Directives are only applied when static HTML matches the selector.


[#61994] Thursday, May 26, 2016, 8 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
leonardok

Total Points: 114
Total Questions: 94
Total Answers: 103

Location: France
Member since Thu, Oct 27, 2022
2 Years ago
;