angular2:在组件中包含第三方 js 脚本

IT技术 javascript angular
2021-02-20 18:43:10

有没有办法将第三方 JS 脚本包含在 Angular2 组件中而不是将其包含在 index.html 中?

我有一个包装 dataTables 的表格组件。它是唯一需要包含 js/css 数据表的组件。如果我能让我的 index.html 更干净就好了。组件装饰器确实允许您指定 css 文件。

我尝试在组件 html 中移动我的脚本标签,但这似乎不起作用。

1个回答

组件模板中的脚本标签被删除。一种解决方法是在ngAfterViewInit()

另见https://github.com/angular/angular/issues/4903

import { DOCUMENT } from '@angular/common';
...

constructor(private @Inject(DOCUMENT) document, 
            private elementRef:ElementRef) {};

ngAfterViewInit() {
  var s = this.document.createElement("script");
  s.type = "text/javascript";
  s.src = "http://somedomain.com/somescript";
  this.elementRef.nativeElement.appendChild(s);
}

另见https://stackoverflow.com/a/9413803/217408

不,目前只有解决方法。
2021-04-17 18:43:10
@PardeepJain 我猜正确的函数名称appendChild(s)在 JS/TS 中。在 Dart 中append(s),我把它搞混了。
2021-04-24 18:43:10
如果您使脚本源依赖于用户输入,那么您当然会为 XSS 攻击打开一扇谷仓门。如果字符串是在应用程序源代码中硬编码的,我看不出有什么问题。
2021-04-26 18:43:10
这似乎不能正常工作 angular throws error this.elementRef.nativeElement.append is not a function为什么 ?
2021-05-05 18:43:10
我通过以下方式获得了参考:document.getElementById。脚本加载,但需要这些脚本的 js 代码在初始加载时无法正确执行(刷新后可以正常工作)。真的,我不认为这会是一个解决方案,即使它有效。我的问题是看看是否有一种干净/标准的“角度方式”来仅在需要它们的组件中包含 js 依赖项。
2021-05-07 18:43:10