【问题标题】:InnerHTML directive ignoring html tags in AngularInnerHTML 指令忽略 Angular 中的 html 标签
【发布时间】:2019-03-20 09:27:24
【问题描述】:

我想将我的部分文字加粗。

我从特定文件中获取文本。

"INFORMATION": "<b>Here's an </b> example of text"

我会把Here an加粗。

在我的 component.ts 中

ngOnInit() {
  this.definition = INFORMATION
}

在我的 html 模板中

<span [innerHTML]="definition | translate"></span>

我得到的是:

这是一个文本示例

我的期望

这是一个文本示例

这就像 Angular 忽略了 html 标签

【问题讨论】:

  • 如果你删除翻译管道会发生什么(只使用[innerHTML]="definition",其中定义是HTML)?
  • 我收到了 INFORMATION 的字样
  • 尝试更改definition变量并直接将值&lt;b&gt;Here's an &lt;/b&gt; example of text赋值给它,然后在模板中[innerHTML]="definition"
  • 你能为此做一个堆栈闪电战吗?我已经检查过了,它完全按照您的预期输出显示我。
  • 不应该是this.definition = 'INFORMATION'吗?

标签: angular typescript innerhtml angular-directive


【解决方案1】:

这里有问题的不是 Angular,而是翻译管道。

将 HTML 绑定到 [innerHTML](或 [outerHTML])是从变量呈现 html 的正确方法,因此问题必须是执行某些逻辑以过滤掉 HTML 标记的翻译管道。

如果您使用的是 ngx-translate:

绑定将在管道第一次解析时正确发生,您将在您的 innerHTML 中获得您的 HTML。

但是下次管道解析时,它只会获取元素的内容。

【讨论】:

  • 我使用 ngx-translate,我得到一个奇怪的行为,有时当我重新加载页面时,应用粗体标签然后它消失了。
  • 这解释了很多。可能发生的情况是管道第一次解析它正确地应用了 HTML,但下一次它只将它应用于元素的实际内容
  • 有什么想法可以让 ngx-translate 与 html 标签一起工作,我正在这样做 github.com/ngx-translate/core/issues/145 但它不起作用
猜你喜欢
  • 2016-12-23
  • 2021-04-11
  • 2012-01-01
  • 2013-05-16
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-08
相关资源
最近更新 更多