Angular2 эквивалент $document.готовый()
простой вопрос, я надеюсь.
Я хочу запустить скрипт, когда Angular2 эквивалент $document.ready() запускается. Каков наилучший способ достичь этого?
Я пробовал поставить скрипт в конце index.html
, но как я узнал, это не работает! Я так понимаю, что он должен войти в какое-то объявление компонента?
можно ли запустить загрузить скрипт из ?
EDIT-Code:
у меня есть следующие 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
как уже отмечалось, скрипты.js "инстанцирует" все это, и поэтому необходимо запускать после того, как угловой готов. сценарий.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
}
5 ответов:
Вы можете создать событие в
ngOnInit()
вашего углового корневого компонента, а затем прослушайте это событие за пределами углового.Это 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')); } }
копирование ответа от Криса:
получил это работает:
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 }
Я пошел с этим решением, поэтому мне не пришлось включать свой пользовательский JS-код в компонент, отличный от jQuery $.getScript