无法从 TS 文件访问外部 JS 文件的功能

Posted

技术标签:

【中文标题】无法从 TS 文件访问外部 JS 文件的功能【英文标题】:Not able to access a function of external JS file from TS file 【发布时间】:2020-01-11 22:43:09 【问题描述】:

我在外部 JS 文件中定义了一个函数。我无法在 home.page.ts 文件中使用它。它显示错误为 TypeError: Cannot read property 'functionName' of undefined

index.html

<body>
    <app-root></app-root>
    <script src="assets/multiLayerSource.js"></script>
</body>

multiLayerSource.js

var multiLayerSource;

var layersHT = [];

function SetLayerHT(arglayersHT) 
    layersHT = arglayersHT;

home.page.ts

import  Component  from '@angular/core';
import  OnInit, Renderer, ViewChild   from '@angular/core';
declare var multiLayerSource: any;

@Component(
    selector: 'app-home',
    templateUrl: 'home.page.html',
    styleUrls: ['home.page.scss'],
)
export class HomePage implements OnInit 
    layersHTP: any = [];
    constructor() 

    ngOnInit() 
        this.layersHTP.push( 'a', 'b', 'c', 'd' );
        multiLayerSource.SetLayerHT(this.layersHTP);
    

尝试访问 SetLayerHT() 时显示错误。 错误是:

TypeError: Cannot read property 'SetLayerHT' of undefined.

请帮忙。

【问题讨论】:

【参考方案1】:

将您的 js 文件移动到资产文件夹,然后在您的代码中这样做

import 'assets/js/multiLayerSource';

declare var SetLayerHT: any;

ngOnInit() 
 this.layersHTP.push( 'a', 'b', 'c', 'd' );
 SetLayerHT(this.layersHTP);

【讨论】:

以上是关于无法从 TS 文件访问外部 JS 文件的功能的主要内容,如果未能解决你的问题,请参考以下文章

从 nuxtjs 中的外部 js 文件访问存储

无法将JSON数据访问到角度(.ts)文件中

Android 11 (R) 文件路径访问

是否可以从外部 js 文件访问 Svelte 商店?

在 angular4 的 app.component.ts 文件中使用外部库变量

angular7中引入外部js文件