我的项目中有很多JS文件.我想在特定模块或组件加载时加载它们,而不是在应用程序启动时加载.

怎么做?

目前,我正在加载index.html个.另一种方法是将它们添加到angular-cli.json中.但这两种方式都会在启动时加载JS文件.但是,我需要在特定页面或模块运行时加载它们.

推荐答案

只需编写一个普通的脚本加载器:

   public loadScript() {
            let body = <HTMLDivElement> document.body;
            let script = document.createElement('script');
            script.innerHTML = '';
            script.src = 'url';
            script.async = true;
            script.defer = true;
            body.appendChild(script);
    }

然后在你想叫的地方叫它:

export class MyComponent{

    ngOnInit(){
        this.loadScript();

    }

}

但如果这些文件是Typescript文件,您也可以通过多种方式延迟加载它们:

1-使用默认的模块级延迟加载

2-使用webpack的require

3.使用SystemJs模块加载器

Angular相关问答推荐

Angular 类型的表单不能分配给分部类型

CDK虚拟滚动由于组件具有注入属性而在滚动时看到错误的值

Angular KendoGrid RowReorderable,drop不适用于新添加的行

如何重新显示ngbAlert(Bootstrap widgest for Angular)消息后再次驳回它

Angular -移位在2个示波器中读取

从Angular 前端访问ASP.NET Core 8 Web API时出现CORS错误

使用 TAB 键时如何聚焦mat-select组件?

使用 Angular 类构造函数来获取依赖项

Router.navigate() 在功能拦截器内不起作用

模块内的命名路由出口 - 路径匹配但内容未加载

将 injectiontoken 用于 Angular 中的模块特定设置

我应该在 Jasmine 3 中使用什么来代替 fit 和 fdescribe?

如何在 Angular Cli 中生成 .angular-cli.json 文件?

如何在angular 5 中获取基本网址?

Angular:ViewChild 上未定义 nativeElement

如何设置背景 colored颜色 IONIC 4

将 Angular 5 升级到 6 时,我得到不兼容的对等依赖(使用 ng update @angular/core)

如何在 Angular 中使用带有 SASS 的 Bootstrap 4

为什么 Angular 项目中没有 Angular-CLI 为 model生成命令?

Angular 4.3 HttpClient:拦截响应