angular - 如何在 Angular 2 中截断 HTML 内容?

标签 angular

我使用了一个管道来截断,正常文本工作正常,但在 html 内容中则不行

app.html

  <tr>
  <td>{{howtoreach?.content|truncate :40}}</td>  //html content.not working
  <td>{{howtoreach?.id}}</td>                   //Working
  <td>

howtoreach

最佳答案

我遇到了同样的问题,并意识到很难通过 innerHTML 找到 Angular 2 解决方案.

我的解决方案

您可以创建这样的自定义函数:

truncateHTML(text: string): string {

    let charlimit = 160;
    if(!text || text.length <= charlimit )
    {
        return text;
    }


  let without_html = text.replace(/<(?:.|\n)*?>/gm, '');
  let shortened = without_html.substring(0, charlimit) + "...";
  return shortened;
}

然后在你看来:

<div [innerHTML]="truncateHTML(html_string)"></div>

这应该有效。


最后评论

我正在使用innerHTML因为仍然有一堆未格式化的字符,例如:

&oslash; &aelig; &nbsp;

特别是如果您来自带有 æ、ø 和 å 的北欧国家:)



正则表达式来自:StripHTML post .


更新

我必须更换中断<br />在替换 HTML 之前,因此显示时行尾的单词(换行符之前)和下一个单词(行上的第一个单词)之间有空格:

let adding_spaces = text.replace(/<br \/>/g, "&nbsp;");

关于angular - 如何在 Angular 2 中截断 HTML 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45317703/

相关文章:

css - Angular (7) Material 工具栏+Sidenav;在桌面与移动设备上遇到高度差异问题(包括 stackblitz 示例)

angular - 子组件的 NGRX 和状态管理

css - 无法让背景图片在 stacklayout 上工作

angular - 每次初始化组件时从 Behavior Subject 接收多个数据实例

angular - 让 mat-autocomplete 不替换但增加值(value)

javascript - Angular2单元测试选择下拉值

angular - 更改光标并删除底层线

angular - 强制 Angular2 在导航时重新加载组件

新 loadChildren 导入语法中的 Angular 8 延迟加载模块未被延迟加载

Angular TranslateService 翻译 &lt;title&gt; 标签