垫表可扩展行角度7

时间:2019-03-20 12:03:35

标签: angular expandable mat-table

是否可以在特定列上禁用行扩展。通常,如果单击行的任何部分,它将展开。但是说一栏是注释部分,当用户单击输入字段时,您不希望该行扩展。 就像在这个例子中一样。单击位置列https://stackblitz.com/angular/gqvrlgbeqkv?file=app%2Ftable-expandable-rows-example.ts

时如何防止行扩展

3 个答案:

答案 0 :(得分:2)

在您的示例Stackblitz中,在行定义中设置了用于扩展行的代码:

...
<tr mat-row *matRowDef="let element; columns: columnsToDisplay;"
  class="example-element-row"
  [class.example-expanded-row]="expandedElement === element"
  (click)="expandedElement = expandedElement === element ? null : element">
</tr>
...

为了使行仅在用户单击特定列时才展开(或者在您的情况下,如果单击特定列时就不展开),则需要将onClick函数和必要的CSS移至应展开,例如

    ...
    <!-- Weight Column -->
    <ng-container matColumnDef="weight">
        <th mat-header-cell mat-sort-header *matHeaderCellDef> Weight </th>
        <td mat-cell *matCellDef="let element" class="example-element-row" [class.example-expanded-row]="expandedElement === element"
         (click)="expandedElement = expandedElement === element ? null : element"> {{element.weight}} </td>
    </ng-container>
    ...

我已经修改了您的示例,使其在单击位置列时不会展开/折叠:Stackblitz

PS:为获得更好的可维护性,您应该调整css类名称等。

答案 1 :(得分:1)

是的,如果您进行更多搜索,则可以将Angular Material或其他Design组件用于Angular。

例如,请参见:Expansion Panel | Angular Material

更新:您可以按照此解决方案中的说明尝试使用$event.stopPropagationAngular Material 2 Table Mat Row Click event also called with button click in Mat Cell

答案 2 :(得分:1)

不使用指针事件

  

pointer-events属性定义元素是否做出反应   指针事件。

使用指针事件创建一个类:none属性,然后使用ngClass动态添加

The property 'Converter' was not found in type 'SvgImageExtension'.

示例:https://stackblitz.com/edit/angular-fpp7fx