复制克里斯的答案:
搞定了:
import {AfterViewInit} from 'angular2/core'; export class HomeCmp implements AfterViewInit { ngAfterViewInit() { //Copy in all the js code from the script.js. Typescript will complain but it works just fine }
您可以自己在ngOnInit()
Angular根组件中触发事件,然后在Angular之外侦听此事件.
这是Dart代码(我不知道TypeScript)但不应该难以翻译
@Component(selector: 'app-element') @View( templateUrl: 'app_element.html', ) class AppElement implements OnInit { ElementRef elementRef; AppElement(this.elementRef); void ngOnInit() { DOM.dispatchEvent(elementRef.nativeElement, new CustomEvent('angular-ready')); } }
我使用了这个解决方案,所以除了jQuery $ .getScript函数之外,我不必在组件中包含我的自定义js代码.
注意:依赖于jQuery.所以你需要jQuery和jQuery类型.
我发现这是一个很好的方法来绕过没有类型的自定义或供应商js文件,这样当你去开始你的应用程序时,TypeScript不会尖叫你.
import { Component,AfterViewInit} from '@angular/core' @Component({ selector: 'ssContent', templateUrl: 'app/content/content.html', }) export class ContentComponent implements AfterViewInit { ngAfterViewInit(){ $.getScript('../js/myjsfile.js'); } }
实际更新在我的场景中,OnInit生命周期事件工作得更好,因为它阻止了脚本在加载视图后加载,这是ngAfterViewInit的情况,并且导致视图在脚本加载之前显示不正确的元素位置.
ngOnInit() { $.getScript('../js/mimity.js'); }