angular - 关于在垫子上切换按钮的问题
问题描述
如何更改仅单击的行上的按钮?
在我的 ts 文件中:箭头 = 'fa fa-caret-right fa-lg';
toggleArrow() {
if (this.arrow === 'fa fa-caret-right fa-lg') {
this.arrow = 'fa fa-sort-desc fa-lg';
} else {
this.arrow = 'fa fa-caret-right fa-lg';
}
}
在我的 html 文件中,这就是我定义操作列的方式:
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef>Actions</th>
<td mat-cell *matCellDef="let element">
<!--edit button-->
<button type="button" class="btn btn-default" aria-label="Left Align">
<span class="fa fa-pencil-square-o fa-lg" aria-hidden="true"></span>
</button>
<!-- arrow button-->
<button type="button" class="btn btn-default" aria-label="Left Align"
(click)="toggleArrow()">
<span class="{{arrow}}" aria-hidden="true"></span>
</button>
</td>
</ng-container>
解决方案
更好的解决方案是存储您单击的元素的 id,然后如果存储的 id 与显示的元素或相应的图标相同,请参阅此处您有一个带有材质图标的示例,但逻辑是相同的对于你的情况。
elementId: number;
toggleArrow(id: number) {
if (id === this.elementId) {
this.elementId = null;
} else {
this.elementId = id;
}
}
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef>Actions</th>
<td mat-cell *matCellDef="let element">
<!--edit button-->
<button type="button" class="btn btn-default" aria-label="Left Align">
<span class="fa fa-pencil-square-o fa-lg" aria-hidden="true"></span>
</button>
<!-- arrow button-->
<button type="button" class="btn btn-default" aria-label="Left Align"
(click)="toggleArrow()">
<span [ngClass]="{
'fa fa-sort-desc fa-lg': element.id === elementId,
'fa fa-caret-right fa-lg': element.id !== elementId}"
aria-hidden="true">
</span>
</button>
</td>
</ng-container>
推荐阅读
- javascript - Javascript :: XML 中的网格/列表视图
- android - 在即时应用上启用推送通知
- php - 如何在一个 php 中使用 PHP 中的不同字段和值进行更新
- shell - awk 命令根据另外两列中的值创建一列
- python-3.x - 如何在 Flask-restplus API 中从 API 更改为域名?
- java - 不能有意图地传递 Hashmap
- python - 如何将屏幕分成三部分并在kivy中单击按钮后添加一个屏幕到现有屏幕?
- php - 如果 php 变量为空,则隐藏行
- c++ - 在构造函数中设置引用?
- excel - Excel中的时间跨度格式