材料分页下拉不合适

Posted

技术标签:

【中文标题】材料分页下拉不合适【英文标题】:Material pagination dropdown out of place 【发布时间】:2019-08-10 00:23:03 【问题描述】:

问题

我目前正在实现一个<mat-table>,并附有一个<mat-paginator>。唯一的问题是每页项目的下拉菜单向左偏移。对于 Bootstrap 之外的情况container

这是正在发生的事情的图像。您可以看到下拉列表的位置和项目的位置完全错误。


代码

我的整个网站都在一个引导容器中,所以我的app.component.html 基本上看起来像这样:

<app-header></app-header>
<div class="container mt-3">
  <router-outlet></router-outlet>
</div>
<app-footer></app-footer>

问题页面只是一个简单的材料表,底部添加了分页。

<div class="row">
  <div class="col-md-12">
    <mat-table *ngIf="items" [dataSource]="items" matSort>

      <!-- ID Column -->
      <ng-container matColumnDef="type">
        <mat-header-cell *matHeaderCellDef mat-sort-header> Type </mat-header-cell>
        <mat-cell *matCellDef="let row"> row.type </mat-cell>
      </ng-container>

      <!-- Provider Column -->
      <ng-container matColumnDef="provider">
        <mat-header-cell *matHeaderCellDef mat-sort-header> Provider </mat-header-cell>
        <mat-cell *matCellDef="let row"> <a href="https://eosauthority.com/account/row.provider" target="_blank">row.provider</a> </mat-cell>
      </ng-container>

      <!-- Name Column -->
      <ng-container matColumnDef="url">
        <mat-header-cell *matHeaderCellDef mat-sort-header> URL </mat-header-cell>
        <mat-cell *matCellDef="let row"> row.url </mat-cell>
      </ng-container>

      <!-- Color Column -->
      <ng-container matColumnDef="country">
        <mat-header-cell *matHeaderCellDef mat-sort-header> Country </mat-header-cell>
        <mat-cell *matCellDef="let row"> row.country - <span class="flag-icon flag-icon-row.country | lowercase"></span> </mat-cell>
      </ng-container>

      <!-- Color Column -->
      <ng-container matColumnDef="updated_on">
        <mat-header-cell *matHeaderCellDef mat-sort-header> Updated </mat-header-cell>
        <mat-cell *matCellDef="let row"> row.updated_on </mat-cell>
      </ng-container>

      <mat-header-row *matHeaderRowDef="['type', 'provider', 'url', 'country', 'updated_on']"></mat-header-row>
      <mat-row *matRowDef="let row; columns: ['type', 'provider', 'url', 'country', 'updated_on']">
      </mat-row>
    </mat-table>

    <mat-paginator [pageSizeOptions]="[5, 10, 25, 100]"></mat-paginator>
  </div>
</div>

【问题讨论】:

【参考方案1】:

似乎需要一些css。只需尝试在您的style.cssstyle.scss 行中加入

@import "../node_modules/@angular/material/prebuilt-themes/indigo-pink.css";

【讨论】:

【参考方案2】:

我终于可以解决这个问题了=D我们知道Angular的一些css代码覆盖了与cdk-overlay-container一起工作的分页的原始css代码。这就是为什么我试图将代码从我自己的 css-File 中的文件 @angular/cdk/overlay-prebuilt.css 中复制出来,修复了这个错误。之后我查看了我真正需要的组件,仅此而已:

//Add this to your css/scss File
::ng-deep 
  .cdk-overlay-container,
  .cdk-global-overlay-wrapper 
    pointer-events: none;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
  
  .cdk-overlay-container 
    position: fixed;
    z-index: 1000;
  

  .cdk-overlay-pane 
    position: absolute;
    pointer-events: auto;
    box-sizing: border-box;
    z-index: 1000;
    display: flex;
    max-width: 100%;
    max-height: 100%;
  

现在你有了 Angular 的原始分页,如果你想要一个非透明的 Dropbox 选择,将以下行添加到 .cdk-overlay-pane

background-color: white;
border: 1px solid rgba(128, 128, 128);

【讨论】:

【参考方案3】:
import  MatPaginatorModule  from '@angular/material/paginator';

您是否导入了材料分页模块?如果没有,请导入并重试。谢谢

【讨论】:

我已经导入了,没什么区别。 你能分享一下这个小提琴吗,因为它对我来说很好用【参考方案4】:

在大多数项目中,无论是 boostrap 主题还是材料主题,通常都有一个主题文件夹,对于 Bootstrap 项目,您将拥有 theme-variable.scsstheme.scss 之类的文件,而在材料项目中,您会找到 @ 987654323@或material-theme.scss

最后两个文件对于正确渲染角度材质组件非常重要,即使在导入负责该组件的模块之后,您也需要上述文件。

确保您拥有这两个文件后,您希望将它们导入您的 styles.css 文件中,并使用以下行:@import './theme/material-theme.css';

完成上述步骤后,表格或任何角度材质组件都会正确渲染。

【讨论】:

以上是关于材料分页下拉不合适的主要内容,如果未能解决你的问题,请参考以下文章

分页在角度 7 中不起作用。(我使用角度材料)

角材料表分页问题角10

一个组件中的多个材料分页在 Angular 中不起作用

单页分页问题中的多个角度材料表

如何从材料角度使用分页器?

重置分页器首页角度材料