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 66

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

для того, чтобы использовать jQuery внутри углового только объявить $ следующим образом: объявить var $: any;

принятый ответ неверен, и он не имеет смысла принимать его, рассматривая вопрос

ngAfterViewInit сработает, когда DOM будет готов

whine ngOnInit будет срабатывать, когда компонент страницы только начинает создаваться