如何在 Angular 5 中从 Typescript 调用 JavaScript 函数?

IT技术 javascript angular typescript angular5
2021-03-01 05:47:54

我正在 Angular 5 中进行 PDF 查看器开发。我已经为 UI 部分编写了 HTML 代码。现在我有了为 UI 元素提供功能的 JavaScript 文件。由于 Angular 5 支持用于实现 UI 组件功能的typescript,我想在 Angular 项目中包含 JavaScript 文件并从我的typescript代码中调用它们。

问题:

  1. 如何以及在何处在 Angular 项目中包含 JavaScript 文件?
  2. 如何从 Typescript 类调用 JavaScript 函数?

如果有人给我举个例子就好了!!

提前致谢!!

2个回答

1. 在 Angular 项目中如何以及在何处包含 JavaScript 文件?

您需要将您的JS文件包含资产文件夹中,并在.angular-cli.json文件中引用此 JS文件。

参考快照,

文件夹结构应该是这样的。

在此处输入图片说明

.angular-cli.json

在此处输入图片说明

2. 如何从 Typescript 类调用 JavaScript 函数?

你的TS应该是这样的。

myJsFile.js 文件内容。

在此处输入图片说明

上面提到的这个示例逻辑可以工作,我已经尝试使用版本 4 进行了测试,所以我希望它也可以与版本 5 一起使用。

更新新 Angular 版本发布的答案。完美运行直到版本11.2.6

此处查找 Angular11的代码(带参数的函数)

也使用 angular 6
2021-04-17 05:47:54
适用于 Angular 8。唯一的变化是,而不是 .angular-cli.json,它只是 angular.json
2021-05-02 05:47:54
我想知道性能。在 angular.json 中包含 Js 文件是最好的方式。它是否已加载并准备好供所有组件调用。事实上,你使用了declare function:any 有点奇怪,这意味着我也可以像在其他组件中那样调用函数,对吗?不会影响性能吗?
2021-05-03 05:47:54
也可以与 Angular 10 和 11 完美配合。
2021-05-08 05:47:54
如何在外部文件的相同方法中传递任何参数?
2021-05-11 05:47:54

Arun Raj R给出的答案是完美的。

但对于角6+项目,则需要采取angular.json替代angular-cli.json

此外,如果您想在来自 js 文件的外部函数中传递参数,而不是仅使用function name.

例如:

app.component.ts

import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
declare function myfunction: any; // just change here from arun answer.

@Component({
  selector: 'app-test',
  templateUrl: './test.component.html',
  styleUrls: ['./test.component.scss']
})
export class TestComponent implements OnInit {
    constructor() { }

    ngOnInit() { 
        myfunction('test1', 'test2');
    }
};

你的Js文件:

function myfunction(params1, params2) {
    console.log('param1', params1);
    console.log('param2', params2);
}
是的很抱歉没有更新我的评论。我必须在 index.html 的 <script> 标记中添加 myscript.js 文件位置。这样就奏效了。谢谢@Shashikanth
2021-04-15 05:47:54
希望您在 angular.json 中添加了该 javascript 文件。也停止运行 ng serve 并再次启动它。所以 angular cli fetch 更新了 angular.json
2021-04-20 05:47:54
而不是“var”,你应该写“function”关键字。
2021-05-01 05:47:54
对我不起作用。我不得不传递一个参数。这没有显示任何错误,但没有提醒该功能
2021-05-02 05:47:54
如何从 .t​​s 文件中的 .js 文件调用具有参数的函数?@ShashikantDevani
2021-05-04 05:47:54