2

我有一个用于显示代码的 Angular 组件,如下所示:

<pre><code>
<ng-content></ng-content>
</code></pre>

我以以下方式使用此组件:

<app-example-code>
      <![CDATA[
      test
      xyz
      ]]>
</app-example-code>

这会产生“测试 xyz”。使用时

<pre><code>
test
xyz
</code></pre>

我得到了预期的换行符。

所以显然 ng-content 似乎失去了换行符。有没有办法可以强制 ng-content 保留这些换行符?

编辑:按照评论者的建议,我得到了它的使用

<app-example-code><pre>
      <![CDATA[
      test
      xyz
      ]]>
</pre></app-example-code>

我更希望能够使用 app-example-code 而无需每次都添加,但我想只要它有效,我就会很高兴。

4

2 回答 2

5

这里发生了两件事。

HTML

默认情况下,大多数元素会将空格折叠成单个空格字符。如果不是这样,写类似

<p>
  paragraph
</p>

在开始和结束时会有相当多的空白,特别是如果它存在于深度嵌套的结构中。

要显示空白,您可以使用 CSS

p { white-space: pre }

另一方面,从版本 6 开始,Angular默认也会去除空格。您可以通过配置其元数据来更改每个组件的此选项:

@Component({
  preserveWhitespaces: true,
})

还有一个选项可以在全球范围内进行

于 2018-09-27T11:09:39.730 回答
3

我不认为 Angular 会“丢失”换行符。这就是 HTML 的工作原理。您可以white-space: pre在 CSS 中使用来保留换行符(和空格)。

更新:检查 Lazar Ljubenović 的答案,也许它毕竟是 Angular。这只是关于模板中的空白,但如果此组件用于另一个模板中,情况就会如此。

于 2018-09-27T09:30:49.113 回答