【问题标题】:How to import a third party library delivered via CDN into Angular/Typescript with Angular-CLI without using declare var?如何在不使用声明变量的情况下,使用 Angular-CLI 将通过 CDN 交付的第三方库导入 Angular/Typescript?
【发布时间】:2017-08-30 00:21:43
【问题描述】:

我正在使用 Angular-CLI(Angular 4、Typescript、Webpack)创建一个带有 Office-js 的 Excel 插件。加载项工作正常,但由于 Microsoft 要求通过 CDN 获取 Office-js,我无法弄清楚如何将 Excel 导入应用程序。

Excel 对象正在加载到全局命名空间中,我可以使用declare var Excel: any 访问它。可悲的是,这种方法吹走了我的自动完成功能。其他第三方库允许import * as _ from 'lodash' 之类的东西,但是当文件通过 CDN 使用 index.html 中的脚本标签传递时,我不知道如何遵循这种模式。

我已经安装了 npm @types/office-js,当我删除 declare var Excel: any; 时,我的编辑器的自动完成功能可以按预期工作。不幸的是,此时打字稿编译器无法编译。如果我在文件顶部明确包含/// <reference types="office-js"/>,一切都会按预期进行,但我觉得这是一个笨拙的解决方案。

如何使用 import { Excel } from '@microsoft/office-js'import * as Excel from 'office-js' 等语法导入 Excel?

【问题讨论】:

  • 好像没有别的办法了?
  • 嗨@Jolleyboy。我遇到了同样的问题。你解决了吗?昨天玩了@microsoft/office-js,终于切换到CDN了。我相信它工作得很好,因为缓存左右。今天我遇到了同样的问题:Cannot find name 'Office' 在打字 + CDN 的情况下。并失去与declare var Excel: any; 的智能。那么解决办法呢?

标签: angular typescript angular-cli office-js


【解决方案1】:

我不知道这是否与 iziToast (没有对 Angular 的原生支持)相同的问题,但我希望它对您有所帮助。所以,

我没有像 'import * as iziToast from 'iziToast' 那样导入 lib,而是这样做:

import { Injectable } from '@angular/core'

let iziToast = require('assets/js/iziToast.min.js')

@Injectable()
export class NotificationService {
  sucess(message?: string) {
    iziToast.success(......)
  }
}

然后像魅力一样工作

【讨论】:

  • 您能否指出它对 cdn 交付脚本的具体操作?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 2019-09-11
  • 2020-03-08
  • 1970-01-01
相关资源
最近更新 更多