Angular 9、ngx-datatable 鼠标悬停时显示按钮
Angular 9, ngx-datatable show button on mouseover
我试图在鼠标悬停在 ngx-datatable 的相应单元格上时显示 link,但它在该特定列的所有行上显示 link,这是我的代码正在做:
<ngx-datatable
class="material ml-0 mr-0"
[rows]="users"
[columnMode]="'flex'"
[headerHeight]="50"
[footerHeight]="50"
[limit]="10"
[rowHeight]="'auto'">
<ngx-datatable-column name="User Name" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
{{ row?.userName }}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Role" [flexGrow]="1">
<ng-template let-row="row" let-rowIndex="rowIndex" ngx-datatable-cell-template let-value="value">
<div (mouseenter)="showRoleOpt(rowIndex,true, $event)" (mouseleave)="showRoleOpt(rowIndex,false, $event)">{{ row?.role }} <a *ngIf="showRoleOptions">Change</a></div>
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="First Name" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
{{ row?.firstName }}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Last Name" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
{{ row?.lastName }}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Email" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
{{ row?.email }}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Phone Number" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
{{ row?.phoneNumber }}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Actions" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
<button mat-icon-button mat-sm-button color="primary" class="mr-1" (click)="openPopUp(row)"><mat-icon>edit</mat-icon></button>
<button mat-icon-button mat-sm-button color="warn" (click)="deleteItem(row)"><mat-icon>delete</mat-icon></button>
</ng-template>
</ngx-datatable-column>
</ngx-datatable>
TS代码:
showRoleOpt(row, opt: boolean, $event) {
console.log($event.target);
this.showRoleOptions = opt;
}
我试图将一些 ID 放入 div,希望检查事件是否有我可以做的事情。但没有得到任何线索。
此行为背后的原因是您对所有 rows
使用相同的 flag
,因此您可以在每一行上都有标志:
<ng-template let-row="row" let-rowIndex="rowIndex" ngx-datatable-cell-template let-value="value">
<div (mouseenter)="showRoleOpt(row,true, $event)" (mouseleave)="showRoleOpt(row,false, $event)">{{ row?.role }} <a *ngIf="row.showRoleOptions">Change</a></div>
</ng-template>
ts:
showRoleOpt(row:any, opt: boolean, $event) {
console.log($event.target);
row.showRoleOptions = opt;
}
我试图在鼠标悬停在 ngx-datatable 的相应单元格上时显示 link,但它在该特定列的所有行上显示 link,这是我的代码正在做:
<ngx-datatable
class="material ml-0 mr-0"
[rows]="users"
[columnMode]="'flex'"
[headerHeight]="50"
[footerHeight]="50"
[limit]="10"
[rowHeight]="'auto'">
<ngx-datatable-column name="User Name" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
{{ row?.userName }}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Role" [flexGrow]="1">
<ng-template let-row="row" let-rowIndex="rowIndex" ngx-datatable-cell-template let-value="value">
<div (mouseenter)="showRoleOpt(rowIndex,true, $event)" (mouseleave)="showRoleOpt(rowIndex,false, $event)">{{ row?.role }} <a *ngIf="showRoleOptions">Change</a></div>
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="First Name" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
{{ row?.firstName }}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Last Name" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
{{ row?.lastName }}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Email" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
{{ row?.email }}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Phone Number" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
{{ row?.phoneNumber }}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Actions" [flexGrow]="1">
<ng-template let-row="row" ngx-datatable-cell-template>
<button mat-icon-button mat-sm-button color="primary" class="mr-1" (click)="openPopUp(row)"><mat-icon>edit</mat-icon></button>
<button mat-icon-button mat-sm-button color="warn" (click)="deleteItem(row)"><mat-icon>delete</mat-icon></button>
</ng-template>
</ngx-datatable-column>
</ngx-datatable>
TS代码:
showRoleOpt(row, opt: boolean, $event) {
console.log($event.target);
this.showRoleOptions = opt;
}
我试图将一些 ID 放入 div,希望检查事件是否有我可以做的事情。但没有得到任何线索。
此行为背后的原因是您对所有 rows
使用相同的 flag
,因此您可以在每一行上都有标志:
<ng-template let-row="row" let-rowIndex="rowIndex" ngx-datatable-cell-template let-value="value">
<div (mouseenter)="showRoleOpt(row,true, $event)" (mouseleave)="showRoleOpt(row,false, $event)">{{ row?.role }} <a *ngIf="row.showRoleOptions">Change</a></div>
</ng-template>
ts:
showRoleOpt(row:any, opt: boolean, $event) {
console.log($event.target);
row.showRoleOptions = opt;
}