有没有一种方法可以使用Angular解决方案从.ts文件中添加类
<div [class.extra-sparkle]="isDelightful == true">
Run Code Online (Sandbox Code Playgroud)
我想做以上但从.ts文件的一侧。代码越少越好。
<button class="general" (click)="ChangeScreen('Global')" [class.selected]="CurrentPage == 'Global'">Global</button>
<button class="general" (click)="ChangeScreen('Maintenance')" [class.selected]="CurrentPage == 'Maintenance'">Maintenance</button>
<button class="general" (click)="ChangeScreen('Settings')" [class.selected]="CurrentPage == 'Settings'">Settings</button>
<button class="general" (click)="ChangeScreen('Profile')" [class.selected]="CurrentPage == 'Profile'">Profile</button>
<button class="general" (click)="ChangeScreen('Transactions')" [class.selected]="CurrentPage == 'Transactions'">Transactions</button>
Run Code Online (Sandbox Code Playgroud)
我只想在ChangeScreen函数中添加如下内容:
ChangeScreen(page) {
page.addClass = page;
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以删除所有这些行: [class.selected]="CurrentPage == '...'"
sti*_*ows 21
您可以使用ngClass指令:
<div id="mydiv" [ngClass]="{'myCSSclass' : condition}"></div>
Run Code Online (Sandbox Code Playgroud)
就那么简单!myDivmyCSSclass仅在condition评估为true. 此条件可以在您的打字稿文件或模板中设置。
לבנ*_*לכה 10
用 Renderer
请参阅此处:https : //angular.io/api/core/Renderer
在这里: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);
}
Run Code Online (Sandbox Code Playgroud)
在 HTML 中:
<button class="general" (click)="ChangeScreen()">Global</button>
Run Code Online (Sandbox Code Playgroud)
或者Render2:
见这里:https : //angular.io/api/core/Renderer2
在这里: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");
}
Run Code Online (Sandbox Code Playgroud)
在 HTML 中:
<button class="general" (click)="ChangeScreen()">Global</button>
Run Code Online (Sandbox Code Playgroud)