如何在 Angular 中包含 JavaScript 脚本文件并从该脚本调用函数?

IT技术 javascript angular
2021-01-26 21:23:33

我有一个 JavaScript 文件abc.js,它有一个名为xyz(). 我想在我的 Angular 项目中调用该函数。我怎么做?

5个回答

请参阅angular-cli.jsonangular.json使用 angular 6+ 时)文件中的脚本

"scripts": [
    "../path" 
 ];

然后添加typings.d.tssrc如果该文件不存在创建该文件

declare var variableName:any;

将其导入到您的文件中

import * as variable from 'variableName';
你能创造一个plunker重现
2021-03-20 21:23:33
我在脚本中添加了路径作为“脚本”:[“./assets/common_header_sidebar.js”];然后在typing.d.ts 中我写了declare var commonHeader:any; 然后在我的 ts 文件中我写了 import * as commonHeaderModule from 'commonHeader'; 但得到“找不到module'commonHeader'。” 错误
2021-03-24 21:23:33
完成集成只是我必须在我使用它的 ts 文件中声明该函数并且不需要导入。万分感谢 。
2021-04-01 21:23:33
@Aravind 如果我的 Angular 4 项目中没有 Typing.d.ts 文件怎么办?
2021-04-06 21:23:33
问这个我可能听起来很傻。但是路径中的文件名(在angular-cli.json中声明)和typing.d.ts文件中对象的声明名是如何相关的。因为我是从声明的对象的名称而不是文件中导入的
2021-04-10 21:23:33

为了包含一个全局库,例如jquery.js脚本数组中的文件angular-cli.jsonangular.json当使用 angular 6+ 时):

"scripts": [
  "../node_modules/jquery/dist/jquery.js"
]

之后,如果 ng serve 已经启动,请重新启动。

导入 ts 文件使用 - declare var $: any;
2021-03-13 21:23:33
这要么在 2021 年不起作用,要么缺少一步
2021-03-13 21:23:33
将文件添加到数组后还有什么?@alansiqueira27 好点
2021-04-01 21:23:33
你如何导入typescript文件?
2021-04-02 21:23:33
angular-cli.json 文件已在 Angular 6+ 版本中重命名/替换为 angular.json。
2021-04-03 21:23:33

index.html 中添加外部 js 文件

<script src="./assets/vendors/myjs.js"></script>

这是myjs.js文件:

var myExtObject = (function() {

    return {
      func1: function() {
        alert('function 1 called');
      },
      func2: function() {
        alert('function 2 called');
      }
    }

})(myExtObject||{})


var webGlObject = (function() { 
    return { 
      init: function() { 
        alert('webGlObject initialized');
      } 
    } 
})(webGlObject||{})

然后声明它在如下组件中

演示.component.ts

declare var myExtObject: any;
declare var webGlObject: any;

constructor(){
    webGlObject.init();
}

callFunction1() {
    myExtObject.func1();
}

callFunction2() {
    myExtObject.func2();
}

演示.component.html

<div>
    <p>click below buttons for function call</p>
    <button (click)="callFunction1()">Call Function 1</button>
    <button (click)="callFunction2()">Call Function 2</button>
</div>

它对我有用...

我认为 index.html 文件在设计上是空的,我认为你应该保持这种方式。ng serve 应该处理所有的 javascript 文件。
2021-03-17 21:23:33
非常详尽的示例,谢谢,它在 angular 6 上对我有用。其他答案都不起作用。
2021-03-25 21:23:33
FWIW,这里是一些说明什么declare-基本上是“declare被用来告诉typescript该变量已在别处创建”(从这个答案)。
2021-03-31 21:23:33

你可以

import * as abc from './abc';
abc.xyz();

或者

import { xyz } from './abc';
xyz()
当文件托管在某处但不在本地存储库中时,我该怎么办?
2021-03-13 21:23:33
在这两种方法中都出错。好吧,我的项目中有一个 .js 文件,但是当我使用第一种方法导入时,它会在编译时出现错误,并且在使用第二种方法时找不到任何module。我只是使用光滑的滑块。
2021-03-13 21:23:33
你弄明白了吗?
2021-03-31 21:23:33

我通过"allowJs": truetsconfig.json文件中的“compilerOptions”中添加解决了这个问题