angular - 在组件级别加载 JS 脚本(不是在启动时)

标签 angular

<分区>

我的项目中有很多 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 - 在组件级别加载 JS 脚本(不是在启动时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45861526/

相关文章:

angular - angularfire2/auth signOut 后如何断开与 Google 身份验证的连接?

Angular Material Tree 不显示填充数组的子元素

javascript - 想要在 Angular 2 的 {{}} 中添加两个值

angular - 如何在 Ionic 2 中将数据从一个页面传递到另一个页面以进行导航

html - 如何更改 HTML View 的外观?

javascript - 如何将用户ID从浏览器传递到 Protractor ?

javascript - 如何在 ngFor 中动态突出显示文本

javascript - 如何将 Zoom Chart 与 Angular 2 集成

javascript - '[string, string] 类型的参数错误? (在 Angular 和 d3 中)

javascript - 在发射其他可观察对象后过滤 RxJS 流,直到计时器用完