【发布时间】:2021-04-06 09:13:08
【问题描述】:
我有一个带有材料表的页面。该表具有自定义数据源,因为分页是服务器端。它还有一个复选框列。表格中的行是可扩展的。
问题:在我转到其他页面并再次重新路由到上述页面之前,可扩展行工作正常。当我重新路由回页面时,许多行会自动处于展开状态。
我发现了一个类似问题的问题:Similar problem 但是我没有选项卡,所以提到的解决方案不能应用于我的问题,而且从根本上说我不确定为什么该解决方案有效。
将可扩展行添加到表中的代码 sn-p:
<ng-container matColumnDef="expandedDetail">
<td mat-cell *matCellDef="let element" [attr.colspan]="displayedColumns.length">
<div [@detailExpand]="element === expandedElement ? 'expanded' : 'collapsed'">
<div>Expandable row details go here</div>
</div>
</td>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns; sticky:true"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns"
(click)="toggle(row); expandedElement = expandedElement == row ? null : row"
[class.element-expanded-row]="expandedElement == element" class="clickable-row element-row">
</mat-row>
<mat-row *matRowDef="let row; columns: ['expandedDetail'];"
[@detailExpand]="row === expandedElement ? 'expanded' : 'collapsed'">
</mat-row>
</mat-table>
在 TS 文件中,我有一个变量,我在 ngOnInit 上将其重置为 null:
expandedElement: any;
另外, 当我回到页面时,我观察到的另一种行为是我必须单击该行两次才能关闭它,这意味着折叠和打开该行的条件(元素 === 扩展元素)只要该行可见就满足了当我回到页面时。
有人知道可能是什么问题吗?
编辑:
角度材料页面上的expandable table example 不必使用 [@detailExpand] 用于展开详细信息 mat-row 但是我必须使用,否则我会在 2 行数据之间看到一个空行。为什么这样?它与这个问题有什么关系吗?
<mat-row *matRowDef="let row; columns: ['expandedDetail'];"
[@detailExpand]="row === expandedElement ? 'expanded' : 'collapsed'">
</mat-row>
【问题讨论】:
-
当用户被引导到页面时,您是否尝试过将
expandedElement设置为undefined? -
我已经将它设置为空。刚试过未定义。不修复错误。