Angular2 - [ngClass]的问题

时间:2017-04-23 12:46:06

标签: angular

我正在尝试将条件类添加到div,而到目前为止,如果我点击某个特定按钮,它会根据条件(这很好)将类添加到它中,但是,当我点击同一页面上的另一个按钮(具有相同条件),该类从第一个删除并分配给第二个。

想要的行为:

单击某个按钮,然后单击另一个按钮时,它不应该从第一个按钮中删除该类。就像在Facebook上一样(点击帖子的like按钮,然后你可以转到另一个帖子并点击like按钮等。)

HTML

<div class="agreeBtn" (click)="like(review.objectId)" [ngClass]="{'agreeBtnClicked': updateBtnWithId === review.objectId && clicked}">I agree</div>

.TS

like(objId){

   this.updateBtnWithId = objId;

 if(this.updateBtnWithId === objId){
        this.clicked = true;
  }
}

1 个答案:

答案 0 :(得分:0)

你需要重温你的逻辑。 发生这种情况是因为您的所有按钮都有一个共同的布尔变量clicked和一个公共ID updateBtnWithId。这意味着一次只能设置一个帖子。

您需要一组变量来跟踪列表中的按钮:clicked[]。 或者,对于您的示例,在设置该类的帖子列表中的每个liked对象中都有一个review属性。

例如:

<div class="agreeBtn" (click)="like(review)" [ngClass]="{'agreeBtnClicked': review.liked}">I agree</div>

在课堂上

like(obj){
   obj.liked=true;
   //this.updateBtnWithId = objId;

/* if(this.updateBtnWithId === objId){
        this.clicked = true;
  }*/
}