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');
}
}
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
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.
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