У меня есть mat-table
, который просматривается 3 пользователями разных ролей.Таблица имеет несколько столбцов;один из столбцов - active
(логическое значение, которое контролирует активацию и деактивацию учетной записи).Я хочу переключать это значение с помощью переключателя в той же таблице (в другом столбце), но только если пользователь является администратором.
Я уже достиг этого, используя таблицу начальной загрузки следующим образом:
<table class="table table-striped">
<thead>
<tr>
<th *ngIf="isAdmin(currentUser)" (click)="sortByAccountStatus()">
<a>Deactivate/Activate</a>
<a class="sort-by"></a>
</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let chartOfAccounts of accountList.reverse();" [hidden]="currentUser.role !== '1'">
<td [hidden]="!chartOfAccounts.accountActive">
<a (click)="deactivateAccount(chartOfAccounts)" class="text-danger">Deactivate</a>
</td>
<td [hidden]="chartOfAccounts.accountActive">
<a (click)="activateAccount(chartOfAccounts)" class="text-danger">Activate</a>
</td>
</tr>
</tbody>
<tbody>
<tr *ngFor="let chartOfAccounts of accountList" [hidden]="currentUser.role === '1'">
<td>{{accountActiveStatus(chartOfAccounts.accountActive)}}</td>
</tr>
</tbody>
</table>
Приведенный выше код добавит столбец в таблицу, где администратор может щелкнуть по активировать или деактивировать в зависимости от значения логического значения.Операции реализованы в компоненте.
Используя mat-table
, я получил логический столбец active
для работы.
<ng-container matColumnDef="accountActive">
<mat-header-cell *matHeaderCellDef mat-sort-header>Active</mat-header-cell>
<mat-cell *matCellDef="let chartOfAccounts"> {{chartOfAccounts.accountActive}} </mat-cell>
</ng-container>
Моя цель - создать еще один столбец, содержащий переключательвперед и назад от true
до false
вот так
<ng-container matColumnDef="activation">
<mat-header-cell *matHeaderCellDef mat-sort-header>Activate/Deactivate</mat-header-cell>
<mat-cell *matCellDef="let chartOfAccounts" [hidden]="!chartOfAccounts.accountActive">
<a (click)="deactivateAccount(chartOfAccounts)" class="text-danger">Deactivate</a>
</mat-cell>
<mat-cell *matCellDef="let chartOfAccounts" [hidden]="chartOfAccounts.accountActive">
<a (click)="activateAccount(chartOfAccounts)" class="text-danger">Deactivate</a>
</mat-cell>
</ng-container>
Это не работает и приводит к странному результату, когда при выключении переключателя его невозможно снова включить, связь исчезает,и столбец переключения тоже.Вот скриншот.
Логические значения помещаются справа от таблиц, когда они переключаются на false
Обновление:
Вот пример stackblitz .Переключатель не работает, но в основном при нажатии на переключатель значение active должно переключаться между true
и false
в зависимости от того, включен или выключен переключатель.