Angular 4在HTML中输出完整的HTML语法代码作为原始文本

Posted

技术标签:

【中文标题】Angular 4在HTML中输出完整的HTML语法代码作为原始文本【英文标题】:Angular 4 Output Complete HTML Syntax code in HTML as raw text 【发布时间】:2018-04-05 06:42:29 【问题描述】:

我已经搜索了可能的答案,但没有一个有效。所有的 innerhtml 和 PRE 标记示例都适用于代码或文本,但不适用于 HTML。这正是我想要放入变量的内容:

<div [ngStyle]="'display':'flex', 'flex-direction':'column', 'width': '100vw', 'height': '100vh'">
  <top-header>
    <a class="topHeaderItem" (click)="goToHome()">Home</a>
    <a class="topHeaderItem" (click)="gotoTOC()">Contents</a>
  </top-header>

这正是我想要在屏幕上显示的内容 - 每个字符,因为它是一个教程示例。

这是我的痛苦。我的 HTML:

1
<div [innerHTML]="code1">
</div>
<hr>
2
<div>
<pre>
  <code [innerHTML]="code1"></code>
</pre>
</div>
<hr>
3
<div [innerHTML]=code1>
</div>

我的组件.ts:

import Component from '@angular/core';

@Component(
  selector: 'cs-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.scss']
)
export class HomeComponent 
  code1 = `
<div [ngStyle]="'display':'flex', 'flex-direction':'column', 'width': '100vw', 'height': '100vh'">
  <top-header>
    <a class="topHeaderItem" (click)="goToHome()">Home</a>
    <a class="topHeaderItem" (click)="gotoTOC()">Contents</a>
  </top-header>
  `

   constructor() 
  

现在我可怜的输出:

【问题讨论】:

code1 ? 嗨 Vega,这非常接近。就像我要求的那样,所有的 HTML 都是原始文本。不幸的是,这一切都排在一条长线上。为每一行制作 div 并为缩进制作一些样式并不会杀死我。想提出这个作为答案吗? 【参考方案1】:

[innerHTML] 绑定将解释HTML。如果要显示 HTML 代码,可以改用 [innerText],或者像 @Vega 指出的那样简单地使用字符串插值。这将正确地转义 HTML。

<div> code1 </div>

// or

<div [innerText]="code1"></div>

绑定到[innerText] 将保留换行符。

【讨论】:

我之前尝试过第二个:在上面显示的输出中查看我的#1。不过,我非常想保留换行符。还有什么想法吗? innerText 将保留这些(将它们转换为&lt;br&gt;)。但是您也可以使用第一种方法并在 HTML/CSS 中处理这个问题,就像 @Gaby 建议的那样(使用 &lt;code&gt;&lt;pre&gt; 标记或 &lt;div&gt; 上的 white-space: pre CSS 属性。 亲爱的上帝!为什么这个简单的答案如此难以理解!天哪!【参考方案2】:

innerHTML 是如果您想实际显示作为文档一部分插入到 DOM 中的 HTML。

您需要正常的 code1 语法,该语法将对变量进行编码以供显示。

添加 codepre 将按照您想要的方式设置样式(或者您可以通过 CSS 将容器的 css 设置为 white-space:pre

<div><code><pre>code1</pre></code></div>

https://plnkr.co/edit/cVnQZeWnqJCYTBmndmB6?p=preview 的示例

【讨论】:

在我尝试过的所有组合中,我没有尝试过这个 LOL...代码中的 pre 然后 ...太棒了。我必须在我的个人维基上写下来。谢谢。 我有&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;My First javascript Code&lt;/title&gt; &lt;/head&gt; &lt;script type="text/javascript"&gt; var myVar = 'global'; function checkscope() var myVar = 'local'; console.log(myVar); &lt;/script&gt; &lt;body onload="checkscope();"&gt; &lt;h2&gt;JavaScript Comment&lt;/h2&gt; &lt;/body&gt; &lt;/html&gt; 这不适用于&lt;div&gt;&lt;code&gt;&lt;pre&gt;code1&lt;/pre&gt;&lt;/code&gt;&lt;/div&gt;

以上是关于Angular 4在HTML中输出完整的HTML语法代码作为原始文本的主要内容,如果未能解决你的问题,请参考以下文章

Angular 完整日历视图

Angular 4 - 滚动动画

jstorm系列-1:入门

一旦 HTML 在 Angular 4 中完全动态呈现,如何在 jQuery 中调用函数?

在 Angular 2/4 中使用 typescript 动态创建 HTML 元素数组

angular中ng-repeat是啥意思