如何在 TypeScript Angular 中使用外部 Javascript

Posted

技术标签:

【中文标题】如何在 TypeScript Angular 中使用外部 Javascript【英文标题】:How to Use External Javascript in TypeScript Angular 【发布时间】:2019-06-28 20:44:23 【问题描述】:

我想在 typescript 中使用 jquery 和 easypiechart js 文件的函数。

这样不行。

如何将我在代码中指定的这些脚本定义为打字稿?


index.component.ts

import  Component, OnInit  from '@angular/core';

import * as $ from "../../../../../assets/plugins/jquery/jquery.min.js";
import  easyPieChart  from "../../../../../assets/plugins/easypiechart/jquery.easypiechart.min.js";

// these above 2 js files are defined in angular.json script section

@Component(
  selector: 'app-index',
  templateUrl: './index.component.html',
  styleUrls: ['./index.component.scss']
)

export class IndexComponent implements OnInit 

  constructor() 

  ngOnInit() 

    //$(function()
    //  $('.easypiechart').easyPieChart();
    //);

    // How to write this above script as typescript ?????????????????????

  

【问题讨论】:

这看起来是dublicate。 ***.com/questions/47346559/… 正如指出的那样,它是重复的,为什么还要在 Angular 中使用 jquery?有什么具体原因吗? 不要在 Angular 中使用 jquery。选择一个框架或另一个 using external JS libraries in my angular 2 project的可能重复 【参考方案1】:

从上面的问题来看,jquery.easypiechart.min.js 是您需要在 Angular 应用程序中用作 external js 的那个。。 p>

    把js放在assets文件夹下说/assets/js/jquery.easypiechart.min.js

    转到您的项目 angular.json 文件并在架构师节点的脚本节点下作为数组中的条目放置。

    “脚本”:[ "./node_modules/jquery/dist/jquery.min.js","./src/assets/js/jquery.easypiechart.min.js" ]

现在您可以在任何项目组件中引用外部 js

  declare var $: any;// referencing jQuery library
    @Component(
      selector: 'app-index',
      templateUrl: './index.component.html',
      styleUrls: ['./index.component.scss']
    )

    export class IndexComponent implements OnInit 
      constructor() 
      ngOnInit() 
      $(document).ready(function () 
          //accessing easypiechart.min.js.
          $('.easypiechart').easyPieChart();
         );
      
    

【讨论】:

【参考方案2】:

如果您已将它们包含在脚本或 index.html 中,则不必再次将它们导入到 .TS 文件中

改用declare,它应该可以工作 What does 'declare' do in 'export declare class Actions'?

【讨论】:

【参考方案3】:

您应该将其用作 node_modules 依赖项,而不是将其放在资产文件夹中

对于简单的饼图运行这个npm i easy-pie-chart --save &对于jquery运行npm i jquery

【讨论】:

【参考方案4】:

通常你不想在Angular中使用jquery,因为它通常意味着直接修改DOM,这是一种不好的做法,但是有办法做到这一点:https://medium.com/all-is-web/angular-5-using-jquery-plugins-5edf4e642969

如果您想绘制饼图或其他类型的图表,您可以改用ng2-charts,它将允许您将charts.js 与Angular 和Typescript 一起使用。

【讨论】:

以上是关于如何在 TypeScript Angular 中使用外部 Javascript的主要内容,如果未能解决你的问题,请参考以下文章

如何在Angular2中使禁用的反应形式可编辑

如何在使用 Angular 7 和 Spring Boot 构建的 Web 应用程序中使浏览器缓存无效

在 TypeScript 中使泛型参数的顺序变得多余?

使用 webpack 和 typescript 摇树

有没有办法在 Angular 中使字段可拖动和可编辑?

如何在对象数组中显示特定对象(Angular 5,TypeScript)