在 angular4 的 app.component.ts 文件中使用外部库变量

Posted

技术标签:

【中文标题】在 angular4 的 app.component.ts 文件中使用外部库变量【英文标题】:Using external library variable in app.component.ts file in angular4 【发布时间】:2018-11-22 08:55:11 【问题描述】:

我想使用在 app.component.ts 文件的外部 js 库中声明的全局变量 cwic。 js 库作为 cwic-debug.js 保存在 assets 文件夹中。现在要初始化库并使用 cwic 变量,必须将声明 SystemController 方法调用为-

cwic.SystemController.initialize() 

index.html

<script type="text/javascript" src="./assets/cwic-debug.js"></script>

我已经尝试通过以下方式初始化 cwic 库-

app.component.ts-

 export class AppComponent implements AfterViewInit
  ngAfterViewInit()
    cwic.SystemController.initialize();
    console.log(cwic);
  
  title = 'Angular Project';

但由于 cwic 变量无法识别,因此会引发错误并在 cwic 单词下划线为红色。

js 库,即 cwic-debug.js 看起来像这样-

var cwic =
/******/ (function(modules)  // webpackBootstrap
/******/    // The module cache
/******/    var installedModules = ;
/******/
/******/    // The require function
/******/    function __webpack_require__(moduleId) 
/******/

如何在 app.component.ts 文件中使用这个 cwic 变量?

【问题讨论】:

【参考方案1】:

您可以声明变量并将其键入为any

declare var cwic: any;

TypeScript 将停止抱怨变量的类型并假设它存在,但您将不再从 IDE 获得类型帮助。

【讨论】:

非常感谢!它有帮助!但是有没有其他方法可以将 cwic 变量导入到 app.component.ts 文件中? 我不知道 cwic 是什么,但如果库只是注入到 JS 域中,可能不会。您可以查找该库是否提供 typescript 类型文件 (*.d.ts),其中仅包含 typescript 的类型注释,然后您可以导入这些文件。

以上是关于在 angular4 的 app.component.ts 文件中使用外部库变量的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular4 中提交隐藏表单

如何在angular4的firebase电话身份验证中重新发送短信验证?

ngModel 在 Angular4 中不起作用

multi:true 在 angular4 中的提供者中意味着啥

Angular4 Reactive嵌套表单问题

如何使用angular4在ngFor循环中显示嵌套的@component?