Angular中TypeScript只读PopupTemplate文本截断方案咨询
解决PopupTemplate中长文本截断的问题
原因说明
你用的{other}是PopupTemplate自身的占位符语法,不是Angular的模板插值,所以Angular的slice管道在这里不生效,得换两种思路处理:
方法一:提前截断数据
在把数据传给PopupTemplate之前,先对other字段做字符串截断处理,示例代码:
// 假设你的数据结构如下 const popupData = { name: '示例名称', address: '示例地址', city: '示例城市', other: '非常长的文本内容非常长的文本内容非常长的文本内容非常长的文本内容' }; // 截断处理:保留前50个字符,超出部分加省略号 popupData.other = popupData.other?.length > 50 ? `${popupData.other.slice(0, 50)}...` : popupData.other; // 将处理后的数据传入PopupTemplate使用
方法二:用内联CSS实现自动截断
直接在content的HTML字符串里给other内容套一个带样式的span,通过CSS实现截断显示省略号,修改后的PopupTemplate代码:
static readonly simpleTemplate = new PopupTemplate({ title: '{name}', content: '<b>Address:</b> {address}<br/>' + '<b>City:</b> {city}<br/>' + '<b>Other:</b> <span style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 200px; display: inline-block;">{other}</span>' });
- 单行长截断:使用上述样式,
max-width可根据需求调整宽度 - 多行截断(仅支持webkit内核浏览器):将span样式替换为以下代码,
-webkit-line-clamp设置显示行数
display: -webkit-box; -webkit-line-clamp: 2; /* 最多显示2行 */ -webkit-box-orient: vertical; overflow: hidden; max-width: 200px;
内容的提问来源于stack exchange,提问作者EagleEye1812
相关产品推荐
相关产品推荐

