如何在运行时以 Angular 2 加载外部 js 脚本?

Posted

技术标签:

【中文标题】如何在运行时以 Angular 2 加载外部 js 脚本?【英文标题】:How to load external js script in angular 2 in runtime? 【发布时间】:2016-05-17 15:16:11 【问题描述】:

我正在使用 Twitter 数字进行身份验证。它需要一个小的 .js 脚本来下载并初始化它。他们建议直接从他们的服务器获取文件。

我要导入

<script id="digits-sdk" src="https://cdn.digits.com/1/sdk.js" async></script>

并使用 Digits.init() 之类的方式初始化 sdk。

我正在使用使用 webpack 的 angular2 webpack starter 模板。

之前我使用的是 systemjs,我只是将文件名映射到 url 并将其导入到我的组件中。像这样

  var map =  'Digits':'https://cdn.digits.com/1/sdk' ;

然后将它导入到像import * as Digits from 'Digits';这样的角度组件中

我知道有 webpack externals,但是不一致。

console.log(Digits) in ngOnInit() 有时显示正确的对象有时未定义错误。

【问题讨论】:

【参考方案1】:

我在这方面有一些运气。我正在使用日历 js 文件,并希望从控制器的输入中获取日期结果。就我而言,它是 Pickaday。首先像往常一样导入文件,无论您的主 html 文件是什么。

<script src="/assets/js/pikaday.js"></script>

然后创建一个代表你需要的功能的类。

export class PikadaySource 
    field: any;
    firstDay: number;
    minDate: Date;
    maxDate: Date;
    yearRange: number = 1;
    disableWeekends: boolean;
    format: string = 'MM-DD-YYYY';
    init();

该类的目的是防止转译器出现问题。由于导入的脚本在全局范围内,它现在应该可以使用了。

【讨论】:

以上是关于如何在运行时以 Angular 2 加载外部 js 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

Angular2组件加载外部js lib文件

Webpack - 在 Angular 2 中调用外部 JS

Angular2 AOT 编译与静态外部 js 文件

angular7中引入外部js文件

如何将动态外部组件加载到 Angular 应用程序中

如何让组件在单击按钮时以角度删除自身