【问题标题】:Expandable row in angular 6 with angular material that have the exact columns as the parent row角度 6 中的可扩展行,具有角度材料,具有作为父行的确切列
【发布时间】:2019-08-31 21:52:57
【问题描述】:

我已经参与了具有可扩展行的角材料项目,并通过引用 here 成功制作了这些项目。但是我遇到了一些问题,因为我遵循的示例只有一列用于扩展行。所以我的问题是我可以使可扩展行具有与父行完全相同的列吗?如果可能的话,我可以提供一些示例/指南吗?

提前致谢。

我已经尝试在展开的行中制作表格,但问题是表格与父列对齐有点麻烦。我想我是否可以像使用父列一样使用 mat-table,只是没有 [datasource],因为我尝试显示的数据已经在展开的行中。

<!-- Expanded Column - The detail row is made up of this one column -->
<ng-container matColumnDef="expandedDetail">
  <mat-cell *matCellDef="let detail"> -- Im want to use data in 'detail'
    -- table in here that has the same column as the parent table --
  </mat-cell>
</ng-container>

<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns;"
        matRipple 
        class="element-row" 
        [class.expanded]="expandedElement == row"
        (click)="expandedElement = row"></mat-row>
<mat-row *matRowDef="let row; columns: ['expandedDetail']; when: isExpansionDetailRow"
        [@detailExpand]="row.element == expandedElement ? 'expanded' : 'collapsed'"
        style="overflow: hidden"> 
</mat-row>

假设表格有 5 个父列,所以我希望扩展行也有 5 个列,它们遵循父列的宽度。

【问题讨论】:

  • 你并不孤单——我也有同样的愿望。从我自己的搜索中获得的一些想法:在 stackblitz 上的 this 示例中将 colspan 更改为 4 并更改 CSS &lt;tr style="padding:0;" 尽管列未对齐,但仍然接近。也许使用引导网格来解决问题?
  • 看着 (this)[dzurico.com/angular-master-detail-table/] blog post 和 ngx-nested-data-table on (github)[github.com/daniele-zurico/ngx-nested-data-table] 似乎比我更好的程序员采用了插入表格修复的相同方法使用 css,接受不完美。
  • @AndrewAllen 我现在一直在使用该示例,它已经在我的屏幕上完美对齐,但不知何故在不同的屏幕上仍然没有对齐..

标签: angular angular-material angular6 mat-table


【解决方案1】:

您需要告诉展开的行您希望它跨越多少列。如果您希望它跨越所有列,您可以使用[attr.colspan]="displayedColumns.length"

您的展开行:

<td mat-cell *matCellDef="let element" [attr.colspan]="displayedColumns.length">

如果您想以表格格式显示数据,不幸的是我认为您必须在展开的行中添加另一个 mat-table,我认为您不能“重用”已经存在的表格。

查看我之前对类似问题here 的回答。

我已经修改了我在那里发布的stackblitz,以便它 反映您的需求。它在 扩展行,你只需要设置一个新的数据源。

【讨论】:

  • 谢谢,我之前已经看过你的 stackblitz 示例。但实际问题是列未对齐。当屏幕尺寸发生变化时,我需要它完全对齐并遵循父列的宽度。
  • 我明白了。解决这个问题的方法是操纵用于原始 MatTable 的数据源,然后插入要显示的行,包括标题行。让我快速地扔一个堆栈闪电战。
  • 你可以试试this。在哪里修改原始数据源,这样您就不会出现调整大小/对齐问题。这里唯一的问题是您必须手动修改数据源并更改模型属性以适应您的字幕行。非常非常难看,但它有点像解决您的问题的方法。
  • @FabianKing 是的。这就是我要找的。我只需要扩展行内的表的另一个数据源。非常感谢。 link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多