【问题标题】:Angular, <template> element and #document-fragmentAngular、<template> 元素和#document-fragment
【发布时间】:2021-02-20 06:58:36
【问题描述】:
  1. 如果我在任何基本 HTML 页面中添加 &lt;template&gt;&lt;img src="url1" /&gt;&lt;/template&gt;,则不会下载 url1 处的 img 资源,并且根据 Chrome DevTools 创建包含 img 元素的文档片段

  1. 如果我将 &lt;template&gt;&lt;img src="url2" /&gt;&lt;/template&gt; 添加到任何 Angular 组件模板文件,url2 处的 img 资源将被下载,并且 DOM 包含一个模板元素,其中包含一个空文档片段和一个 img 元素作为兄弟元素

如何将&lt;template ... sn-p 添加到 Angular 模板中,如 2),但结果与 1) 相同?

&lt;template&gt; 元素或 &lt;img&gt; 元素上的 ngNonBindable 似乎没有效果。
我正在使用 Angular 10。
我需要这样做,因为我正在使用第 3 方库,该库需要使用 &lt;template&gt; 元素进行配置,其中特定标记为 img src 值,该值将在内部被替换。

【问题讨论】:

    标签: angular-template


    【解决方案1】:

    &lt;template&gt; HTML 标签在 Angular 中的呈现方式肯定不同。

    使用 [innerHTML] 绑定让您的模板呈现内容,就像它在 Angular 之外一样。在测试您的示例时,我需要将img HTML 定义为组件中的一个单独变量,如下所示,以免被 Angular 清理:

    export class SomeComponent {
      htmlStr: string = '<img src="url1" />';
    }
    

    来源:https://www.digitalocean.com/community/tutorials/angular-innerhtml-binding-angular

    现在将&lt;template&gt; 中的htmlStr 变量与[innerHTML] 一起使用:

    <template [innerHTML]="htmlStr"> </template>
    

    这些是我回答的其他来源:Angular 6 create HTMLElement from HTMLTemplateElement https://dev.to/patricksevat/using-web-components-custom-elements-in-template-tag-htmltemplateelement-using-angular-1ik8

    【讨论】:

    • 谢谢艾伦,这解决了我的问题。你对为什么 Angular 使用这个标签会有这种行为有任何参考吗?
    • 皮埃尔,这是一个很好的后续问题,我不太了解机制,无法回答。研究这个问题的大部分困难在于,大多数搜索引擎结果都指向 angular 的模板,而不是 angular 中使用的 html 模板元素。如果您遇到确切原因,请分享。
    • 没有明确的答案,但你可以在 dev.to 上看到几个 cmets 发布 Allen。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 2022-12-03
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多