Angular2相当于$ document.ready()

简单的问题,我希望。

我希望在$ document.ready()的Angular2等价物被激发时运行一个脚本。 达到这个目标的最好方法是什么?

我已经尝试把脚本放在index.html的末尾,但是我发现这不起作用! 我认为它必须进行某种组件声明?

是否有可能从.js文件运行加载脚本?

编辑 – 代码:

我有以下js和css插件注入我的应用程序(从铸造HTML主题 )。

  <link href="css/themify-icons.css" rel="stylesheet" type="text/css" media="all" /> <link href="css/bootstrap.css" rel="stylesheet" type="text/css" media="all" /> ... <script src="js/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> <script src="js/flexslider.min.js"></script> ... <script src="js/scripts.js"></script> //This initiates all the plugins 

如上所述,scripts.js“实例化”整个事情,因此需要在Angular准备好之后运行。 的script.js

得到它的工作:

 import {Component, AfterViewInit} from 'angular2/core'; @Component({ selector: 'home', templateUrl: './components/home/home.html' }) export class HomeCmp implements AfterViewInit { ngAfterViewInit() { //Copy in all the js code from the script.js. Typescript will complain but it works just fine } 

你可以在你的Angular根组件的ngOnInit()中自己触发一个事件,然后在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')); } } 

从Chris复制答案:

得到它的工作:

 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 } 

我去了这个解决scheme,所以我不必将我的自定义js代码包含在jQuery $ .getScript函数以外的组件中。

注意:对jQuery有依赖性。 所以你将需要jQuery和jQuerytypes。

我发现这是一个很好的方式来解决自定义或供应商的js文件,没有types的可用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'); } 

为了在Angular中使用jQuery,只声明$,如下所示: declare var $:any;