2017-05-19 18 views
1

我有一个用于用户界面的一堆jQuery方法的外部js文件。但是,Angular路由器是异步的,所以其他页面上的用户界面元素不能被脚本正确渲染,因为它们还不存在于DOM中。如何在Angular中重新执行外部脚本?

以前,我是樱桃采摘脚本中的一些方法,并将它们添加到名为rerender的方法,但这变得混乱。

我的问题是看看是否有方法在rerender方法中再次加载和执行整个脚本?

回答

1

您可以导入外部脚本。做到这一点的构造函数中:

constructor() { 
    System.import('script-loader!bower_components/fullcalendar/dist/fullcalendar.min.js').then(()=>{ 
     this.render(); // Do whatever, for demonstration I call a render() method 
    }) 
} 

请确保您custom-typings你声明System

declare let System: SystemJS; 

interface SystemJS { 
    import: (path?: string) => Promise<any>; 
} 

interface GlobalEnvironment { 
    SystemJS: SystemJS; 
    System: SystemJS; 
} 

选项2:

或者,你可以把这个到后您的模块进口报表:

require('bootstrap/js/tooltip.js'); // For example 
+0

我正在使用Angular CLI,根据我的知识它不使用System,但我可能是错的。你能用Angular CLI验证吗? – wilsonhobbs

+0

它使用它。我也有Angular-CLI! :D – SrAxi

+0

它似乎没有工作。导入正在执行,但脚本不在我所知的范围内。 – wilsonhobbs

相关问题