我有一个外部js文件,其中包含一堆用于用户界面的jQuery方法。但是,Angular路由器是异步的,因此脚本无法正确呈现其他页面上的用户界面元素,因为它们尚不存在于DOM中。
以前,我很喜欢从脚本中选择一些方法并将它们添加到名为rerender
的方法中,但这会变得混乱。
我的问题是看看是否有办法在rerender
方法内再次加载和执行整个脚本?
答案 0 :(得分: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