在角材料表中使用省略号

时间:2018-07-19 17:44:54

标签: css angular html-table angular-material angular5

默认情况下,如果Angular Material Table从包含它的单元格中溢出,则Angular Material Table会将内容放在下面的新行中。我试图对其进行设置,以使溢出的文本被截断为“ ...”。我现在拥有的代码不会截断内容并将其显示在一行中,直到溢出到父<div>

我使用的是<table mat-table>而不是<mat-table>,因为它具有根据Angular Material Website中的内容根据其内容调整大小的列。我尝试创建的表具有响应能力,并根据其父<div>

的大小自行调整大小

HTML:

<div class="table-content">
  <table mat-table [dataSource]="dataSource" class="table-container">
    <ng-container [matColumnDef]="item" *ngFor="let item of displayedColumns">
      <th mat-header-cell *matHeaderCellDef>{{item}} </th>
      <td mat-cell *matCellDef="let element">
        <div class="table-data-content">
          <span>{{element[item]}}</span>
        </div>
      </td>
    </ng-container>
    <tr mat-header-row *matHeaderRowDef="displayedColumns;"></tr>
    <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
  </table>
</div>

CSS:

.table-container {
  position: absolute;
  width: 100%;
  height: 100%;
}
.table-data-content {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

角度组件中使用的示例数据:

  dataSource = [
    { Name: "Some file name that is very long", Date: '08/30/2017', Uploader: 'Some uploader name that is very long'},
    { Name: "Some file name that is very long", Date: '08/30/2017', Uploader: 'Some uploader name that is very long'}
  ];

  displayedColumns = ['Name', 'Date', 'Uploader'];

该如何解决才能在表格中正确使用省略号?

更新: 如果我添加以下CSS,则省略号可以使用,但我仍然不确定为什么。

td {
max-width: 0px;
}

但是,这种方法破坏了Angular Material Table根据内容的长度有效分配每一列的宽度的方式,这样当另一列仍然有很多空白时,内容会被截断。有更好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

第一个问题是您将宽度和高度应用于“表内容”,而需要直接将其应用于表标签

尝试一下:

table {
  width: 100%;
  table-layout: fixed;
}

th, td {
  overflow: hidden;
  width:auto;
  text-overflow: ellipsis;
  white-space: nowrap;
}
表格标签上的

使用表格布局:已应用固定,内容不再决定布局,而是浏览器使用表格第一个定义的宽度行以定义列宽。

答案 1 :(得分:0)

您可以如下定义内嵌样式:

style="white-space: nowrap; text-overflow:ellipsis; overflow: hidden; max-width:1px;"