我有一个包含许多列的简单表格,我希望在调整浏览器窗口大小时自动缩小列。
table-responsive
可与 Bootstrap 配合使用,但我正在为 Angular Material 寻找类似的东西。我试图避免有 2 个表定义,并且不想自己在 CSS 中这样做。 Angular Material 中有为此的标准方法吗?
<table class="mdl-data-table mdl-js-data-table mdl-shadow--2dp" flex>
<thead>
<th class="mdl-data-table__cell--non-numeric">Date</th>
<th class="mdl-data-table__cell--non-numeric">Time</th>
<th class="mdl-data-table__cell--non-numeric">Park</th>
<th class="mdl-data-table__cell--non-numeric">Home Team</th>
<th class="mdl-data-table__cell--non-numeric">Away Team</th>
<th class="mdl-data-table__cell--non-numeric">Win/Loss</th>
</thead>
<tbody>
<tr ng-repeat="game in games">
<td class="mdl-data-table__cell--non-numeric">{{game.GameDate | SLS_Date}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.GameTime | SLS_Time:'HH:mm' }}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.VenueName}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.HomeTeamName}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.AwayTeamName}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.WinLoss}}</td>
</tr>
</tbody>
</table>
注意,我在这里使用了 Material Design Lite 表,因为 Angular Material 目前还没有表。同样的问题,包括使用 Flex 和网格。
我猜新的材质世界不喜欢表格,所以最好的选择是更改布局以不使用表格。
我创建了一个小指令,可以应用于
mat-table
表以使其响应。通过这种方式,可以很容易地仅向应用程序中的某些表添加响应行为(这是我的情况的要求)。
因此基本上该指令将每个标题单元格的内容(列名称)复制为数据属性,以便可以通过 CSS
content
属性访问它(受此 article 的启发)。不幸的是 CSS 样式不能应用于指令,因此需要全局导入样式。
特点
matSort
指令可排序的列这不应被视为通用解决方案,因为它当然不能涵盖所有用例。此外,表格移动视图的样式与我的具体要求相关,可能需要调整。但我只是想分享它,这样它也许可以作为其他人的起点并提供帮助。
一个简单的解决方案是用具有以下样式的
<div>
包裹您的桌子:
width: 100%;
overflow-x: auto;
元素中。
也更改了 te tsconfig 以包含 DOM.Iterable
。当我使用 te fdevtools nothonmig 更改切换到移动视图时购买 - 表格被切断 我想知道我的 Angular 材质版本是否与此有关?将我的 mat-table 实现与 Stackblitz 中的实现进行比较,没有发现任何差异。
“@角度/核心”:“^16.2.0” “@角度/材料”:“^16.2.12”
缺少什么?