无法从Angular 6中的Typescript调用javascript函数

时间:2018-08-14 06:28:07

标签: angular

是否未从ngOnInit()调用下面的javascript函数(帮助)?

在Web控制台中:错误ReferenceError:“未定义帮助”

您知道如何做到吗?


src / assets / myjs.js:

function help() {
    console.log("hilfe");   
}

src / app / highlight.directive.ts:

import { Directive, ElementRef, OnInit } from '@angular/core';

declare function help() : any;

@Directive({
  selector: '[appHighlight]'
})
export class HighlightDirective implements OnInit {

  constructor(el: ElementRef) { 
    el.nativeElement.style.backgroundColor = 'yellow';
  }

  ngOnInit() {
    help();
  }

}

angular.json:

...

    "styles": [
         "src/styles.css"
    ],
    "scripts": [
        "src/assets/myjs.js"
    ],
},
...

4 个答案:

答案 0 :(得分:2)

导出类似的函数

module.exports.help = () => {
      console.log("hilfe");   
}

然后

const helper = require("./pathofyourfile");

答案 1 :(得分:1)

@ simon-reeves

  

“脚本”:[           “ src / assets / myjs.js”       ]

我不得不将testjs.js文件放到assets文件夹中,并按如下所示应用路径

此外,请确保在上方定义了assets部分,并且源中的该路径下存在该文件

enter image description here

此外,检查生成的scripts.js文件cuz的内容,它应该包含您的help函数,例如就我而言,它是myalert函数

enter image description here

希望它会对您有所帮助

答案 2 :(得分:1)

angular.json文件中有两个脚本部分。一个是“建筑师:”,另一个是“测试:”。您的脚本定义在两个地方都有吗?

    "scripts": [ "src/assets/myjs.js" ],

我怀疑第二点是否会有所作为,但我受一则帖子的指导,在资产“ js”下创建了一个子目录。像这样...

    "scripts": [ "src/assets/js/myjs.js" ],

您也可以在js函数中尝试使用alert('hilfe'),而不是console.log()...,尽管两者都应该起作用。

否则,您的设置似乎非常正确。

此外,您需要在组件文件中声明相同的功能。例如,函数名称为JavaScript文件为help(),则需要在组件上方声明它,例如:     声明函数help():any; 然后在该文件中要调用的位置调用帮助功能。

答案 3 :(得分:1)

ES6 / TS

只需在help.ts中导出功能帮助

export default function Help(){}

通过...导入任何地方

import Help from 'help'