Is there a way to add a class from the .ts file, using Angular solutions
I want to d
While the solution with the Renderer works, I am proposing you create a data structure for your buttons
buttons: Array<{label: string}> = [
{
label: 'Global'
},
{
label: 'Maintenance'
},
{
label: 'Settings'
},
{
label: 'Profile'
},
{
label: 'Transactions'
}
]
This can easily be iterated through using ngFor
<button
*ngFor="let button of buttons"
class="general"
(click)="ChangeScreen(button.label)"
[class.selected]="CurrentPage == button.label">
{{ button.label }}
</button>
And only thing your ChangeScreen
method would need is... the thing its already doing, setting the current page!
See stackblitz for an example of how this plays out.
Use Renderer
See here:https://angular.io/api/core/Renderer
and here:https://angular.io/api/core/Renderer#setElementClass
import { Renderer } from '@angular/core';
constructor(private render:Renderer) { }
ChangeScreen(event:any) {
this.renderer.setElementClass(event.target,"selected",true);
}
In html:
<button class="general" (click)="ChangeScreen()">Global</button>
Or Render2
:
See here:https://angular.io/api/core/Renderer2
and here:https://angular.io/api/core/Renderer2#addClass
import { Renderer2 } from '@angular/core';
constructor(private render:Renderer2) { }
ChangeScreen(event:any) {
this.renderer.addClass(event.target,"selected");
}
In html:
<button class="general" (click)="ChangeScreen()">Global</button>
You can use ngClass
directive:
<div id="mydiv" [ngClass]="{'myCSSclass' : condition}"></div>
Simple as that! myDiv will have the class myCSSclass
only when the condition
evaluates to true
. This condition can be set in your typescript file or in the template.