javascript - 如何在 Angular 5 中公开 js 函数

标签 javascript jquery angular typescript angular5

我正在使用 Angular 5 来开发我的应用程序。
在assets/js文件夹中,我有一个js文件test.js。我在这个 js 文件中有一个变量 data 和一个函数 Loaddata() 。我希望能够在我的 app.component.ts 中访问这些。

我能够将变量作用域公开并能够在 component.ts 中访问它,但我无法对该函数执行相同的操作。

这是我对变量遵循的过程:
1.在angular-cli.json

中添加js文件的引用
        "scripts": [
                "assets/js/test.js"
         ]

2.在typings.d.ts文件中添加了变量名称。

       declare var data:any;

现在我可以在 app.component.ts 中访问这个变量了。
我希望能够以类似的方式访问该功能。
谁能解释一下我该怎么做。

最佳答案

这似乎是使用可注入(inject)服务的一个很棒的用例。在应用程序的 src/app 目录中创建一个 loadData.service.ts 文件(如果您使用的是 Angular CLI),然后将其格式化如下。

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

@Injectable()
export class LoadDataService {
    data = [
        // Your Data Here
    ]
    constructor() {};

    loadData(params?) {
        // your code here
    }
}

然后,每当您需要在组件中使用该函数时,只需将该服务导入到您的组件中,在构造函数中创建它的本地实例,然后使用它! 要访问数据,只需将其设置为等于该组件构造函数中的另一个变量即可。

import { LoadDataService } from '../loadData.service';

@Component({
    //whatever
})

export class YourComponent {
    dataFromService: [];
    constructor(private loadDataService: LoadDataService) {
        this.dataFromService = this.loadDataService.data;
    }

    runThisToGetData() {
        this.loadDataService.loadData(yourParams).subscribe(r => r);
    }
}

祝你好运!

关于javascript - 如何在 Angular 5 中公开 js 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49178824/

相关文章:

javascript - 如果未设置字段,则停止提交评论

javascript - 页面加载后PHP可以运行吗?

jquery - 如何更改默认 select2 占位符颜色的 css?

angularjs - Angular6 ngStyle 动态应用样式

angular - ASP .Net Core 3.1 Angular 模板不起作用

javascript - 如何在linux专用服务器上运行简单的node.js Hello World程序

javascript - Javascript 中不区分大小写的文本内容

javascript - 在 <a> 悬停时显示同级 <div>

javascript - 在javascript中比较和过滤对象数组

javascript - 调用存储在 Typescript 变量中的方法