将外部框架与angular2一起使用

用户名

有点通用的问题,但是它使我感到非常困扰,因为在Angular2中进行编码时遇到了很多问题。

Angular 2是一个相对较新的框架。在Angular 2出现之前,有很多以前建立的库。我想知道,我只能使用专门为Angular 2构建的框架吗?还是像papa parse这样的东西对我有用

npm install --save

我如何才能知道哪个框架可以正常工作而无需下载,安装并最终发现错误?

菲尔·埃雷兹(Kfir Erez)

如果您想包含一个全局js文件(例如库)并将其封装在angular2(ng2)中,则可以选择以下几种方法:

选项1:

您可能会*.d.ts在这里https://github.com/DefinitelyTyped/DefinitelyTyped找到它的文件,也建议您在这里查看:https : //microsoft.github.io/TypeSearch

如果找到了它的@type,则应安装该库(例如npm install --save theLib.js)并安装已找到的@type->安装完成后,您可以通过代码(例如import * as theLib from 'theLib';导入该库

选项2:

如果找不到,您可以尝试生成d.ts文件。例如,如果您有自己的库,可以导出某种类。您可能要使用以下工具来生成d.ts文件:https : //github.com/Microsoft/dts-gen

一旦d.ts生成,你应该包括在您的tsconfig.json文件(在“文件”键)

选项3:

如果第3方库假定是作为全局变量包含在您的应用程序中(如jquery),但在任何地方都没有@type,则可以按以下方式包含它:

  1. 下载库(您认为合适的任何方式)
  2. 在index.html中包含一个脚本标记以加载库

<脚本src =“ ../ node_modules / myExtLib / dist / myExtLib.js”> </ script>

  1. global.d.ts旁边添加,然后向tsconfig.json其中添加对象声明。例如,如果myExtLib.js创建一个全局变量myExtObj:

声明const myExtObj:any;

  1. 如果不存在,请将以下内容添加到tsconfig.json中

“文件”:[“ global.d.ts”]

现在,您可以访问myExtObjglobaly。

我个人不喜欢这样的全局变量,因此我创建了一个引用它的服务,然后将其从全局名称空间中删除,如下所示:

服务

import { Injectable } from '@angular/core';

function getWindow():any {
  return window;
}

@Injectable()
export class MyExtObjRefService {
  private _myExtObj:any;

  constructor() {
    let window = getWindow();
    this._myExtObj = window.myExtObj;
    window._myExtObj = null;
    _myExtObj = null;
  }

  get myExtObj() {
    return this._myExtObj;
  }
}

不要忘了在模块的 providers

现在,您可以myExtObj通过导入服务并调用任何组件来访问任何组件,而myExtObjRefService.myExtObj不必担心全局名称空间中有垃圾。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将ES6与Angular2 rc3一起使用时需要未捕获的反射元数据填充

将实体框架与Web代理一起使用

Angular2将@Inputs与<router-outlet>一起使用

如何使jQuery UI日期选择器与angular2一起使用?

服务在Angular2中无法与* ngIf一起正常使用

将页面/全局变量传递到Angular2应用中以与服务一起使用

如何将Cyclejs与外部模板一起使用

将Angular2与Material Design Lite一起使用

Angular2路由与Express路由一起使用?

无法将ng-bootstrap与Webpack和Angular2一起使用

如何使vis.js lib与Angular2一起使用?

Angular 2:将管道与ngModel一起使用

将jQuery-steps与Angular2中的FormGroup一起使用

将Filesaver js与angular2一起使用

将routerLink与来自angular2中promise的参数一起使用

Wijmo无法与发布的angular2一起使用

可以将Realm与Angular 2一起使用吗?

使Amazon Cognito与angular2和Typescript一起使用

在angular2中将CSS的第一个子元素与ngFor一起使用

将CSS悬停与外部SVG文件一起使用?

将React Native移动应用程序与angular2 Web应用程序一起使用

将DialogFlow与外部API和电报一起使用

将MongoDB与Play 2框架一起使用

Material Design Lite不能完全与Angular2一起使用

为什么Vega 3无法与Angular2一起使用?

angular2:将ngFor与应该表示表格行的模板一起使用时出现奇怪的结果

Angular 2与JQuery一起使用

与Angular 2一起使用的Material Design UI框架

将 angular2-busy 与 ActivatedRoute 一起使用