Angular 2将相同的单击事件绑定到多个元素并更改类

Angular 2将相同的单击事件绑定到多个元素并更改类,angular,angular2-template,Angular,Angular2 Template,仅当我有多个同名的(单击)事件时,如果仅通过(单击)事件使用该元素,我如何更改其类?这可能吗(参见下面的代码) 还是应该区分其(单击)事件名称?这不是多余的吗 HTML 您在showPassword方法中有event,所以您可以完全控制您单击的元素,您可以使用jQuery将类添加/删除到元素中 if($(event.target).hasClass('fa-eye-slash')){ $(event.target).removeClass('fa-eye-slash').addClass('

仅当我有多个同名的(单击)事件时,如果仅通过(单击)事件使用该元素,我如何更改其类?这可能吗(参见下面的代码)

还是应该区分其(单击)事件名称?这不是多余的吗

HTML


您在
showPassword
方法中有
event
,所以您可以完全控制您单击的元素,您可以使用jQuery将类添加/删除到元素中

if($(event.target).hasClass('fa-eye-slash')){
  $(event.target).removeClass('fa-eye-slash').addClass('fa-eye');
}
else{
  $(event.target).removeClass('fa-eye').addClass('fa-eye-slash');
}

使用不同的布尔值
这应该起作用:

<mat-form-field class="col-md-12">
   <label><i class="fa fa-lock"></i> CURRENT PASSWORD</label>
   <input matInput type="password" name="current_password">
   <i class="fa right" [ngClass]="{'fa-eye': !displayCurrentPassword, 'fa-eye-slash': displayCurrentPassword}" (click)="displayCurrentPassword=!displayCurrentPassword"></i>
</mat-form-field>
<mat-form-field class="col-md-12">
   <label><i class="fa fa-lock"></i> NEW PASSWORD</label>
   <input matInput type="password" name="new_pass">
   <i class="fa right" [ngClass]="{'fa-eye': !displayNewPassword, 'fa-eye-slash': displayNewPassword}" (click)="displayNewPassword=!displayNewPassword"></i>
</mat-form-field>
<mat-form-field class="col-md-12">
   <label><i class="fa fa-lock"></i> CONFIRM NEW PASSWORD</label>
   <input matInput type="password" name="con_new_pass">
   <i class="fa right" [ngClass]="{'fa-eye': !displayConfirmPassword, 'fa-eye-slash': displayConfirmPassword}" (click)="displayConfirmPassword=!displayConfirmPassword"></i>
</mat-form-field>

您想更改所单击元素的
class
,对吗?@AliShahbaz Yes它实际上没有更改类名,只是添加了一个新类名?是的,它添加了类名。您想更改类名吗?如果是,那么您已经通过此
[ngClass]=“{'fa-eye':!displayPassword,'fa-eye slash':displayPassword}”行更改了类名
是,但它有一些问题,因为所有元素都将更改,而不是单击元素。基本上,我想更改每个元素上的displayPassword值。这样就可以更改单击的元素中的类名。(当然,如果可能的话)
if($(event.target).hasClass('fa-eye-slash')){
  $(event.target).removeClass('fa-eye-slash').addClass('fa-eye');
}
else{
  $(event.target).removeClass('fa-eye').addClass('fa-eye-slash');
}
<mat-form-field class="col-md-12">
   <label><i class="fa fa-lock"></i> CURRENT PASSWORD</label>
   <input matInput type="password" name="current_password">
   <i class="fa right" [ngClass]="{'fa-eye': !displayCurrentPassword, 'fa-eye-slash': displayCurrentPassword}" (click)="displayCurrentPassword=!displayCurrentPassword"></i>
</mat-form-field>
<mat-form-field class="col-md-12">
   <label><i class="fa fa-lock"></i> NEW PASSWORD</label>
   <input matInput type="password" name="new_pass">
   <i class="fa right" [ngClass]="{'fa-eye': !displayNewPassword, 'fa-eye-slash': displayNewPassword}" (click)="displayNewPassword=!displayNewPassword"></i>
</mat-form-field>
<mat-form-field class="col-md-12">
   <label><i class="fa fa-lock"></i> CONFIRM NEW PASSWORD</label>
   <input matInput type="password" name="con_new_pass">
   <i class="fa right" [ngClass]="{'fa-eye': !displayConfirmPassword, 'fa-eye-slash': displayConfirmPassword}" (click)="displayConfirmPassword=!displayConfirmPassword"></i>
</mat-form-field>
displayConfirmPassword = false;
displayNewPassword=false;
displayCurrentPassword=false;