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

Javascript angular2:在组件中包含第三方js脚本,javascript,angular,Javascript,Angular,有没有办法在Angular2组件中包含第三方JS脚本,而不是将其包含在index.html中 我有一个包装数据表的表组件。它是唯一需要js/css包含的dataTables的组件。如果我能保持index.html更干净就好了。组件装饰器允许您指定css文件 我尝试将脚本标记移动到组件html中,但这似乎不起作用。组件模板中的脚本标记将被删除。解决方法是在ngAfterViewInit()中动态创建脚本标记 另见 另请参见yes您可以在所需组件中仅在样式URL中加载第三方css。我不知道.jsfi

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

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


我尝试将脚本标记移动到组件html中,但这似乎不起作用。

组件模板中的脚本标记将被删除。解决方法是在
ngAfterViewInit()中动态创建脚本标记

另见


另请参见

yes您可以在所需组件中仅在样式URL中加载第三方
css
。我不知道
.js
filesdup,您是否考虑过使用priming DataTable,它是一个本机组件。我确实看过Priming,但我需要打印/pdf功能。这似乎无法正常工作。错误
this.elementRef.nativeElement.append不是函数
?为什么?@PardeepJain我想在JS/TS中正确的函数名是
appendChild
。在Dart中它是
append
,我把它搞混了。我通过document.getElementById得到了一个ref。脚本会加载,但需要这些脚本的js代码在初始加载时(刷新后)无法正确执行。真的,我不认为这是一个解决方案,即使它起作用。我的问题是看是否有一种干净/标准的“角度方法”只在需要js依赖项的组件中包含js依赖项。不,目前只有解决方法。如果您使脚本源依赖于用户输入,那么您当然为XSS攻击打开了一扇门。如果应用程序源代码中的字符串是硬编码的,我看不出有问题。
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);
}