angular - 刷新在 Angular 6 中加载的页面后,在路由上不加载外部 js
问题描述
刷新页面之前 刷新页面
后,
我从过去 3 天开始就遇到了这个问题,尝试了很多方法,但没有一个适合我。
问题是我正在从 angular.json 加载外部 js。它是我使用的所有插件的常见 js,例如侧边栏、仪表板图表、菜单切换等。它在第一次页面加载时正常工作,但是当我通过组件到组件或模块到组件将页面路由时,js在我不刷新页面之前不起作用。
如果我在 chrome 中打开网络选项卡开发人员工具中的脚本,我可以看到我的 js,但是一旦我刷新页面,它仍然没有加载,它可以按照我的需要顺利运行。请指导我如何解决这个问题。对不起语言,我希望你得到我的查询。谢谢
ngOnInit() {
this.loadScript('../assets/js/scripts/pages/dashboard-lite.js');
}
public loadScript(url: string) {
const body = <HTMLDivElement>document.body;
const script = document.createElement('script');
script.innerHTML = '';
script.src = url;
script.async = false;
script.defer = true;
body.appendChild(script);
}
尝试使用此代码加载主组件中的所有 js,但仍然发生相同的情况,我必须刷新整个页面。尝试在 index.html 中使用 js,但没有成功。
解决方案
该文件在运行时加载,因此 URL 应该相对于应用程序的基本 URL,而不是相对于项目结构。这意味着 URL 应该是assets/js/scripts/pages/dashboard-lite.js
(即删除前导...
)。
推荐阅读
- nlp - 当我有它们的向量时如何对关键词进行聚类或获取关键词相似度
- angular - 获得 Promise 而不是 ZoneAwarePromise
- python - Jinja 条件语句 (if/else) 和 {{ py 模型输出 }}
- javascript - 什么是
在 HTML 中? - asp.net-core - AspNetCore OData 不适用于 .NET Core 3.0
- java - 无法在 Java 中将 ByteArrayResource 转换为 Multipart 文件
- c++ - 如何将控制台输出中的所有内容复制到文本文件中?
- javascript - 如何在画布中将轴更改为左下角后修复鼠标事件
- mysql - 编写动态代码以将值插入变量中,并且变量是列名
- regex - 正则表达式用于通过 Notepad++ 在 Latex 中将 \eqref{*} 转换为 (\ref{*})