需要在角度2中插入Script标签

2023-12-02

我已经做了一些阅读和搜索,几乎所有我发现的内容都表明脚本标签不能包含在 Angular 2 的模板中。

我们会像您一样有意从模板中删除标签 不应该使用它们来按需加载代码。https://github.com/angular/angular/issues/4903 [2015]

However- 有一个功能bypassSecurityTrustScript

我想知道何时以及如何bypassSecurityTrustScriptAngular 2 中的意图是使用什么?

我知道有人问过类似的问题:Angular2动态插入脚本标签- 虽然没有人回答他们如何使用的问题bypassSecurityTrustScript,而且我不确定为该问题提供的答案如何工作,因为它似乎在模板中使用 JavaScript。


在您的视图中包含脚本通常是一种不好的做法。如果你坚持这样做,你可以使用这个组件:

scripthack.component.html:

<div #script style.display="none">
  <ng-content></ng-content>
</div>

scripthack.component.ts:

import { Component, ElementRef, ViewChild, Input } from '@angular/core';

@Component({
    selector: 'script-hack',
    templateUrl: './scripthack.component.html'
})
export class ScriptHackComponent {

    @Input()
    src: string;

    @Input()
    type: string;

    @ViewChild('script') script: ElementRef;

    convertToScript() {
        var element = this.script.nativeElement;
        var script = document.createElement("script");
        script.type = this.type ? this.type : "text/javascript";
        if (this.src) {
            script.src = this.src;
        }
        if (element.innerHTML) {
            script.innerHTML = element.innerHTML;
        }
        var parent = element.parentElement;
        parent.parentElement.replaceChild(script, parent);
    }

    ngAfterViewInit() {
        this.convertToScript();
    }
}

用法(内联):

<script-hack>alert('hoi');</script-hack>

用法(外部):

<script-hack src="//platform.twitter.com/widgets.js" type="text/javascript"></script-hack>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要在角度2中插入Script标签 的相关文章

随机推荐

  • C++ 中并行向量的 find_first

    我有一个相当大的向量 一些向量成员并行地匹配某个条件 我想找到与条件匹配的第一个元素 我的问题与这个问题非常相似 tbb 并行查找第一个元素 但我没有tbb 检查条件非常繁琐 所以我无法依次对所有条件进行检查 这就是为什么我想并行运行它 我
  • php - 如何合并每个数组具有不同元素数的二维数组

    我有 2 组二维数组 我想合并成 1 个二维数组 但每个数组中的元素数量不相同 并且前 2 个元素相同 我不想重复它 这是它 第一个二维数组 Array 0 gt Array 0 gt 25 2 2013 1 gt 8 45 a m 2 g
  • Model View ViewModel / Knockout 解决什么问题? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我在阅读某人的代码时遇到了 Knockout 和 MVVM 我对这两个主题都做了一些阅读 但我仍然对它们真正解决的问题感到困惑 很可能是因为我还没有构建足够大的应用程序来解决这个
  • 导入错误:没有名为 pandas 的模块

    我正在尝试用 Python 编写代码来获取 Twitter 数据 但没有收到 twython 错误 但我遇到了 Pandas 错误 我已经使用安装了 Pandaspip install pandas 但我仍然收到以下错误 我该如何修复它 F
  • ANTLR4 解析树简化

    有没有办法让 ANTLR4 自动删除生成的解析树中的冗余节点 更具体地说 我一直在尝试 GLSL 的语法 由于自动处理运算符优先级所需的规则转发 您最终会在解析树中得到长线性 表达式 序列 大多数生成的树节点只是 转发到下一个优先级 因此不
  • 如何更改图例的顺序

    我想改变图例的顺序 见图 我希望序列是 绿色和data2 蓝色和data3 黑色和data4 红色和data1 有人能给个demo吗 更改将图添加到图中的顺序 然后调用legend通常情况下 应该可以做到这一点 您也可以按如下方式进行 首先
  • 上传带有 Angular 材质和 Angular JS 的文件

    对于代码 我从中得到了灵感 https codepen io alexandergaziev pen JdVQQm 所以 对于 HTML 我这样做了 div class file input div div class file input
  • 使用C在eclipse中多重定义主要错误

    我正在尝试使用 Eclipse 中的 C 项目生成两个 exe 客户端和服务器 两者都有主要功能 因为他们是不同的前任 两者都使用通用的 confutils c 文件 如何解决主要问题的多重定义 我知道我们不能在一个项目中有两个电源 我的
  • 源中包含 < 和 > 的 XSLT 转换

    我有一个以下格式的输入 XML
  • 在 R 中重新编码多个变量

    我想在 R 中一次重新编码多个变量 这些变量位于更大的数据框中 以下是一些示例数据 z lt data frame A c 1 2 300 444 555 B c 555 444 300 2 1 C c 1 2 300 444 555 D
  • Angular UI Router - 如何在切换视图时保留视图

    我是 Angular 和 UI Router 的新手 Plunk http plnkr co edit 1wfyrGryfGG5RtXozPFY p preview Setup我有三个顶级应用程序导航按钮 主页 项目 帮助 他们使用 Ang
  • R.java 文件未创建

    我的 Android 应用程序中有 R java 文件 但我不知道 它是如何删除的 要再次创建它 我清理我的项目 并通过单击 构建项目 重建我的项目 我不知道是什么问题 它不会再次被创建 一般来说 每当我构建项目时它都会自动创建 如果您在更
  • firebase获取每个子项的子项的数据

    大家好 我是 firebase 的超级新手 我需要一些帮助 首先 我正在做的是一份清单 例如 刻度表包含一个项目列表 其中包含刻度日志 因此我设计的数据如下 清单 ticksheets JbN5ol2jGRtAOZ9ovrO auto ge
  • noscript 标签,如果未启用,我需要提供替代 html

    如果用户浏览器上未启用 JavaScript 是否可以用 HTML 替换 javascript 我知道我可以使用
  • 当以 C++03 为目标时,使用 std::basic_string 作为连续缓冲区是否合理?

    我知道在 C 03 中 从技术上讲std basic string模板不需要有连续的内存 然而 我很好奇现代编译器有多少实现实际上利用了这种自由 例如 如果有人想使用basic string要接收某些 C API 的结果 如下面的示例 分配
  • 是否可以从具有超时的输入流中读取?

    具体来说 问题是编写一个这样的方法 int maybeRead InputStream in long timeout 如果数据在 超时 毫秒内可用 则返回值与 in read 相同 否则返回 2 在该方法返回之前 任何生成的线程都必须退出
  • 您如何简单地解释类型转发?

    我正在准备 MCTS 70 536 阅读后this文章 我不确定我是否理解类型转发的概念 我发现文章中给出的步骤更加令人困惑 如果我复制要转发的类型的源代码并重新编译它 该怎么办 旧的 dll 和客户端会发生什么 类型转发允许您在程序集之间
  • 如何在Python中将日转换为年和月?

    如何在Python中将日转换为年 月和日 例如 如果某人已经 5 538 天了 我怎样才能通过这样的年月日来显示这一点 15岁2个月又1天 这是为了获取用户的输入 print Please enter your birthday bd ye
  • UICollectionView - 水平排列单元格

    所以基本上我的问题是我的集合视图单元格是从上到下排序的 而不是从左到右排序的 This is what it looks like 1 4 7 2 5 8 3 6 9 This is what i want 1 2 3 4 5 6 7 8
  • 需要在角度2中插入Script标签

    我已经做了一些阅读和搜索 几乎所有我发现的内容都表明脚本标签不能包含在 Angular 2 的模板中 我们会像您一样有意从模板中删除标签 不应该使用它们来按需加载代码 https github com angular angular iss