将特定的 Javascript 库导入到 Angular 4(如果库不导出变量)

Import a specific Javascript library in to Angular 4 (if library doesn't export a variable)

我试图在 Angular 4 视图中显示两个 JSON 对象的差异,我正在使用最初为 AngularJS 构建的库 (angular-object-diff) .

该库的演示:Link

我尝试通过以下方式导入此 JS 库:
我正在尝试导入的 JS 文件:angular-object-diff.js,没有导出的变量

在我的 typings.d.ts 中(我添加了以下内容):

declare var ObjectDiff: any;


在我的 angular-cli.json 中,我添加了

"scripts": [
    "../node_modules/angular-object-diff/dist/angular-object-diff.js"
  ],

在我的组件文件中:

const json1 = {
  name: 'John'
};
const json2 = {
  name: 'Johnny'
};
const diff = ObjectDiff.diffOwnProperties(json1, json2);
this.jsonViewData = ObjectDiff.toJsonDiffView(diff);

在我看来:

<pre ng-bind-html="jsonViewData"></pre>
<pre> {{jsonViewData}}</pre>

似乎没有任何效果,我收到 "ObjectDiff" 未在控制台中定义的错误

如果我做错了什么,有人可以告诉我吗? 也欢迎显示 JSON 差异的建议:)

** 谢谢

库不导出任何内容。它使用 IIFE 来避免局部变量污染全局范围。从外部访问局部变量是不可能的,这使得模块模式非常有效(而且很烦人)。

库使用 AngularJS angular 全局并期望它存在。这会产生一个问题,因为在这种情况下 Angular 4 应用程序应该模拟 angular 全局。此外,代码本身依赖于 AngularJS 特定单元($sce 服务)。

应该对库进行分叉和修改以满足期望。应删除提及 angular 的内容。考虑到脚本将在模块范围内执行,应删除 IIFE 并添加适当的导出。