Angular 2 ejecutar script después de renderizar la plantilla


Así que tengo este componente deslizante que utiliza materializecss javascript. Así que después de renderizado, necesito ejecutar

$(document).ready(function(){
    $('body').on('Slider-Loaded',function(){
        console.log('EVENT SLIDER LOADED');
        $('.slider').slider({full_width: true});
        $('.slider').hover(function () {
            $(this).slider('pause');
        }, function () {
            $(this).slider('start')
        });
    });
});

Pero no sé muy bien dónde poner esta línea ya que typescript/angular remove script tag en las plantillas. He incluido jQuery en los archivos ts y esperaba usar el sistema de eventos, pero eso no parece funcionar. Alguna idea? Aquí está el código del archivo ts:

/// <reference path="../../typings/main.d.ts" />
import {Component, Input} from 'angular2/core';
import { RouterLink } from 'angular2/router';
import {ServerService} from './server';


@Component({
    selector: 'slider',
    templateUrl:'/app/template/slider.html',
    directives: [  ],
})

export class SliderComponent {
    @Input() images;
    private server: ServerService;
    public constructor(server: ServerService){
        this.server = server;
    }

    ngOnInit() {
        console.log("THROWING EVENT");
        $('body').trigger('Slider-Loaded');
    }
}
Author: Sangwin Gawande, 2016-03-23

2 answers

ngAfterViewInit() de AppComponent es un ciclo de vida llamadas angulares de devolución de llamada después de que el componente raíz y sus hijos han sido renderizados y debe ajustarse a su propósito.

Véase también https://angular.io/guide/lifecycle-hooks

 60
Author: Günter Zöchbauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-16 17:31:42

He utilizado este método (reportado aquí )

export class AppComponent {

  constructor() {
    if(document.getElementById("testScript"))
      document.getElementById("testScript").remove();
    var testScript = document.createElement("script");
    testScript.setAttribute("id", "testScript");
    testScript.setAttribute("src", "assets/js/test.js");
    document.body.appendChild(testScript);
  }
}

Funcionó para mí ya que quería ejecutar un archivo javascript DESPUÉS DEL COMPONENTE RENDERIZADO.

 0
Author: elfu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-23 21:49:06