Angular 在渲染时删除了前导空格

Posted

技术标签:

【中文标题】Angular 在渲染时删除了前导空格【英文标题】:Angular removes leading whitespace when rendering 【发布时间】:2021-02-04 20:13:34 【问题描述】:

在工作中,我正在开发一个 Angular 组件,该组件在呈现的 html 页面上显示来自其输入的字符串。 显示字符串的 HTML 如下所示:

<span>value</span>

其中value 来自Angular 代码中的this.value。对于普通字符串,这可以正常工作,但我发现 Angular 会去掉前导空格。现在我知道,在将 HTML 渲染到可见页面时,HTML 本身会将多个空格压缩为一个,但空格会从 HTML 本身中删除。 我已验证 Angular 代码中的字符串包含空格:

console.log("The string is: [" + this.value + "]");

在 Web 控制台上打印出 The string is: [ Hello world!]。但是呈现的 HTML 页面上显示的是:

<span>Hello world!</span>

我该如何解决这个问题?

【问题讨论】:

this.value 中是否有前导空格?你想要空白还是不想要? console.log 不像 Angular 那样做任何处理。 也许添加一个  一开始? 有帮助吗? angular.io/api/core/Component#preserveWhitespaces 【参考方案1】:

其中一个选项是使用像 const value = '&amp;nbsp;Hello World!' 这样的不间断空格

【讨论】:

Angular 会去除 html 标签,因为它会在渲染前清理值。 ***.com/questions/49013217/…【参考方案2】:

即使 Angular 保留了我认为它正在做的空白,html 也会将其删除。您有两种选择,要么使用标签,要么通过 css 进行,如下所示:

No Preservation <br/>
<span> Hello world! </span><br/>
<span>   Hello world!  </span>


<br/>
With Pre tag

<pre>
  <span> Hello World!   </span>
</pre>

<br/>
With Css white-space: pre<br/>
<span style="white-space: pre;">
    Hello World!   </span>

【讨论】:

以上是关于Angular 在渲染时删除了前导空格的主要内容,如果未能解决你的问题,请参考以下文章

长数组列表渲染使 Angular.js 中的页面滚动变慢

如何删除前导和尾随空格?

将多个空间合并为单个空间;删除尾随/前导空格

从字符串值中删除空格(前导和尾随)

删除文件夹/文件名的所有前导空格

如何在Java中仅删除字符串的尾随空格并保留前导空格?