【发布时间】:2019-07-24 03:39:38
【问题描述】:
在我当前的项目中,由于是在 *ngFor 指令中生成的,并且数据来自后端,因此我有一个包含可变数量的列和行的表。由于这一点以及单元格中可能存在大量文本的事实,存在溢出并且并非所有列都可以显示。 我最初通过将溢出换行换行来解决它,但是由于它可能是很多文本,因此某些行可能太大了。
我的想法是在溢出隐藏的地方显示某种预览(类似于overflow: ellipsis,但可以展开行以显示所有信息。这样,行将具有合理的大小,但所有可以显示信息。数据存储在一个对象中,列名是string[],数据是string[][]。
<div class="table-responsive">
<table class="table table-bordered table-striped table-hover table-condensed">
<thead>
<tr>
<th *ngFor="let name of data.columnNames">{{name}}</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let row of data.data">
<td *ngFor="let item of row">
{{item}}
</td>
</tr>
</tbody>
</table>
你们会怎么做呢?
【问题讨论】:
-
试过引导弹出窗口?它类似于模态,但不是那么困难而且速度更快。如果您不需要任何操作,它非常适合大量文本。 getbootstrap.com/docs/4.0/components/popovers
-
如果我错了,请纠正我,但它似乎取决于图书馆。如果可以的话,我宁愿不要使用太多。
-
我也使用不带 jquery 的引导程序,原因是角度。但是 Popper.js 是一个库,主要是通过 bootstrap 交付的,它也需要 jquery。但是,是的,如果您不想使用 jquery 和 popper.js 库,它不适合您。那么模态解决方案可能是最接近的替代方案。但你也可以使用 Nebular,它是一个 Popover Angular 模块。 akveo.github.io/nebular/docs/components/popover/…
-
我已经有 jQuery 但没有 Popper.JS。我想我找到了一个只使用 jQuery/JS 的解决方案。通常,溢出由“溢出:省略号”处理。但是,当您单击该行时,使用一些 jQuery,您将其切换为显示所有数据。你觉得这样行吗?
-
当然,你可以在一个简单的 js-script
onClick上更改 CSS-Style 溢出的 CSS-Property。但是您也可以使用角度指令ngStyle或更好的(我更喜欢)ngClass由函数检查是否应用了此类。但是对于所有这些,您需要一个 id 来更改动态生成的td的样式。最好的方法是将点击的td的行和列发送到您正在调用的方法。它看起来像这样:stackoverflow.com/a/49234982/5677688 我有类似的东西并将点击的元素保存在一个变量中。
标签: html css angular responsive-design