Angular 用于切换的 ngClass 和点击事件 class
Angular ngClass and click event for toggling class
在Angular中,我想使用ngClass
和点击事件来切换class。我在网上浏览过,但有些是 angular1 并且没有任何明确的说明或示例。任何帮助将不胜感激!
在HTML中,我有以下内容:
<div class="my_class" (click)="clickEvent($event)" ngClass="{'active': toggle}">
Some content
</div>
在.ts
中:
clickEvent(event) {
// Haven't really got far
var targetEle = event.srcElement.attributes.class;
}
ngClass
应该用方括号括起来,因为这是 属性 绑定。试试这个:
<div class="my_class" (click)="clickEvent($event)" [ngClass]="{'active': toggle}">
Some content
</div>
在你的组件中:
//define the toogle property
private toggle : boolean = false;
//define your method
clickEvent(event){
//if you just want to toggle the class; change toggle variable.
this.toggle = !this.toggle;
}
希望对您有所帮助。
这应该适合你。
在.html:
<div class="my_class" (click)="clickEvent()"
[ngClass]="status ? 'success' : 'danger'">
Some content
</div>
在 .ts 中:
status: boolean = false;
clickEvent(){
this.status = !this.status;
}
不必在 ts 文件中创建函数,您可以从模板本身切换变量。然后,您可以使用该变量将特定的 class 应用于该元素。像这样-
component.html-
<div (click)="status=!status"
[ngClass]="status ? 'success' : 'danger'">
Some content
</div>
因此,当状态为真时,应用 class 成功。当它是错误的危险时 class 被应用。
这将在 ts 文件中没有任何附加代码的情况下工作。
编辑:angular 的最新版本要求在控制器中声明变量 -
component.ts-
status: boolean = false;
如果你想用切换按钮切换文本。
HTML 文件正在使用 bootstrap:
<input class="btn" (click)="muteStream()" type="button"
[ngClass]="status ? 'btn-success' : 'btn-danger'"
[value]="status ? 'unmute' : 'mute'"/>
TS 文件:
muteStream() {
this.status = !this.status;
}
Angular6 使用没有任何变量的 renderer2 和干净的模板:
模板:
<div (click)="toggleClass($event,'testClass')"></div>
在 ts:
toggleClass(event: any, className: string) {
const hasClass = event.target.classList.contains(className);
if(hasClass) {
this.renderer.removeClass(event.target, className);
} else {
this.renderer.addClass(event.target, className);
}
}
也可以把它放在指令中 ;)
我们也可以使用ngClass根据多个条件分配多个CSS 类如下:
<div
[ngClass]="{
'class-name': trueCondition,
'other-class': !trueCondition
}"
></div>
所以通常您会在 class 中创建一个支持变量并在单击时切换它并将 class 绑定绑定到该变量。类似于:
@Component(
selector:'foo',
template:`<a (click)="onClick()"
[class.selected]="wasClicked">Link</a>
`)
export class MyComponent {
wasClicked = false;
onClick() {
this.wasClicked= !this.wasClicked;
}
}
如果您在 angular 中寻找 HTML 的唯一方法...
<div #myDiv class="my_class" (click)="myDiv.classList.toggle('active')">
Some content
</div>
重要的一点是 #myDiv
部分。
这是一个 HTML 节点引用,因此您可以像使用该变量一样将其分配给 document.querySelector('.my_class')
注意: 这个变量是作用域特定的,所以你可以在 *ngFor
语句中使用它
你可以试试这个。
Html.
<button *ngFor="let color of colors; let index=index" class="example1"
(click)="selectColor(index)" [class.choose__color]="viewMode == index">
<mat-icon>fiber_manual_record</mat-icon>
</button>
css.
.example1:hover {
border-bottom: 2px solid black;
}
.choose__color {
border-bottom: 2px solid black;
}
ts.
selectColor(index: any) {
this.viewMode = index;
}
在Angular中,我想使用ngClass
和点击事件来切换class。我在网上浏览过,但有些是 angular1 并且没有任何明确的说明或示例。任何帮助将不胜感激!
在HTML中,我有以下内容:
<div class="my_class" (click)="clickEvent($event)" ngClass="{'active': toggle}">
Some content
</div>
在.ts
中:
clickEvent(event) {
// Haven't really got far
var targetEle = event.srcElement.attributes.class;
}
ngClass
应该用方括号括起来,因为这是 属性 绑定。试试这个:
<div class="my_class" (click)="clickEvent($event)" [ngClass]="{'active': toggle}">
Some content
</div>
在你的组件中:
//define the toogle property
private toggle : boolean = false;
//define your method
clickEvent(event){
//if you just want to toggle the class; change toggle variable.
this.toggle = !this.toggle;
}
希望对您有所帮助。
这应该适合你。
在.html:
<div class="my_class" (click)="clickEvent()"
[ngClass]="status ? 'success' : 'danger'">
Some content
</div>
在 .ts 中:
status: boolean = false;
clickEvent(){
this.status = !this.status;
}
不必在 ts 文件中创建函数,您可以从模板本身切换变量。然后,您可以使用该变量将特定的 class 应用于该元素。像这样-
component.html-
<div (click)="status=!status"
[ngClass]="status ? 'success' : 'danger'">
Some content
</div>
因此,当状态为真时,应用 class 成功。当它是错误的危险时 class 被应用。
这将在 ts 文件中没有任何附加代码的情况下工作。
编辑:angular 的最新版本要求在控制器中声明变量 -
component.ts-
status: boolean = false;
如果你想用切换按钮切换文本。
HTML 文件正在使用 bootstrap:
<input class="btn" (click)="muteStream()" type="button"
[ngClass]="status ? 'btn-success' : 'btn-danger'"
[value]="status ? 'unmute' : 'mute'"/>
TS 文件:
muteStream() {
this.status = !this.status;
}
Angular6 使用没有任何变量的 renderer2 和干净的模板:
模板:
<div (click)="toggleClass($event,'testClass')"></div>
在 ts:
toggleClass(event: any, className: string) {
const hasClass = event.target.classList.contains(className);
if(hasClass) {
this.renderer.removeClass(event.target, className);
} else {
this.renderer.addClass(event.target, className);
}
}
也可以把它放在指令中 ;)
我们也可以使用ngClass根据多个条件分配多个CSS 类如下:
<div
[ngClass]="{
'class-name': trueCondition,
'other-class': !trueCondition
}"
></div>
所以通常您会在 class 中创建一个支持变量并在单击时切换它并将 class 绑定绑定到该变量。类似于:
@Component(
selector:'foo',
template:`<a (click)="onClick()"
[class.selected]="wasClicked">Link</a>
`)
export class MyComponent {
wasClicked = false;
onClick() {
this.wasClicked= !this.wasClicked;
}
}
如果您在 angular 中寻找 HTML 的唯一方法...
<div #myDiv class="my_class" (click)="myDiv.classList.toggle('active')">
Some content
</div>
重要的一点是 #myDiv
部分。
这是一个 HTML 节点引用,因此您可以像使用该变量一样将其分配给 document.querySelector('.my_class')
注意: 这个变量是作用域特定的,所以你可以在 *ngFor
语句中使用它
你可以试试这个。
Html.
<button *ngFor="let color of colors; let index=index" class="example1"
(click)="selectColor(index)" [class.choose__color]="viewMode == index">
<mat-icon>fiber_manual_record</mat-icon>
</button>
css.
.example1:hover {
border-bottom: 2px solid black;
}
.choose__color {
border-bottom: 2px solid black;
}
ts.
selectColor(index: any) {
this.viewMode = index;
}