首页 > 解决方案 > 位置:粘性;在路由器插座子组件中不起作用

问题描述

我无法对子组件内的元素使用粘性位置。位置固定有效,但不能整体解决所需的设计。

使用 CSS

.sticky{
position: fixed;
top: 0;
overflow: hidden;
z-index: 100;
}

在父元素上使用 css 属性就可以了。

Mat Table Sticky Headers 的功能也有类似的问题,即在路由器插座子组件内部时标题不应用粘性属性

请在此处找到代码 https://github.com/shakyamoksha/research-app/tree/master/src/app/components/sticky-table/components

该组件位于路由器插座中,如果我将相同的代码移动到根/父组件(app.component.html),粘性将起作用。

尝试将上面的 css 添加到路由器插座内的简单按钮时会发生同样的问题

    <div class="mat-app-background basic-container">
  <div class="mat-elevation-z8">
    <table mat-table [dataSource]="dataSource">

      <!-- Position Column -->
      <ng-container matColumnDef="position">
        <th mat-header-cell *matHeaderCellDef> No. </th>
        <td mat-cell *matCellDef="let element"> {{element.position}} </td>
      </ng-container>

      <!-- Name Column -->
      <ng-container matColumnDef="name">
        <th mat-header-cell *matHeaderCellDef> Name </th>
        <td mat-cell *matCellDef="let element"> {{element.name}} </td>
      </ng-container>

      <!-- Weight Column -->
      <ng-container matColumnDef="weight">
        <th mat-header-cell *matHeaderCellDef> Weight </th>
        <td mat-cell *matCellDef="let element"> {{element.weight}} </td>
      </ng-container>

      <!-- Symbol Column -->
      <ng-container matColumnDef="symbol">
        <th mat-header-cell *matHeaderCellDef> Symbol </th>
        <td mat-cell *matCellDef="let element"> {{element.symbol}} </td>
      </ng-container>

      <tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
      <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
    </table>
  </div>

</div>

样式

.basic-container {
  padding: 30px;
}

table {
  width: 100%;
}

在滚动时,mat-table 的标题被卡在此示例中的预期行为的顶部https://stackblitz.com/edit/angular-brzwrz-aejes6?file=src%2Findex.html

标签: cssangularparent-child

解决方案


推荐阅读