Angular 2打字稿调用JavaScript函数

约书亚记

是否存在从Angular 2(TypeScript)中的组件调用JavaScript函数的正确方法?

这是我的组件:

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

export class AppComponent implements AfterViewInit {

    constructor(private _elementRef: ElementRef) {
    }

    ngAfterViewInit() {
        /**
         * Works but i have this error :
         * src/app.component.ts(68,9): error TS2304: Cannot find name 'MYTHEME'.
         * src/app.component.ts(69,9): error TS2304: Cannot find name 'MYTHEME'.
         */
        MYTHEME.documentOnLoad.init(); 
        MYTHEME.documentOnReady.init();

        /**
         * Works without error, but doesn't seem like a right way to do it
         */
        var s = document.createElement("script");
        s.text = "MYTHEME.documentOnLoad.init(); MYTHEME.documentOnReady.init();";
        this._elementRef.nativeElement.appendChild(s);
    }
}

直接调用JavaScript函数会导致编译错误,但是“已编译” JavaScript文件(app.component.js)中的语法正确:

AppComponent.prototype.ngAfterViewInit = function () {
    MYTHEME.documentOnLoad.init();
    MYTHEME.documentOnReady.init();
};

第二种方法(appendChild)没有错误,但是我不认为(更改Typescript / angular中的DOM)是正确的方法。

我发现了这一点:使用来自Typescript的Javascript函数,我尝试声明了接口:

interface MYTHEME {
    documentOnLoad: Function;
    documentOnReady: Function;
}

但是TypeScript似乎无法识别它(接口声明中没有错误)。

谢谢

编辑 :

按照胡安·门德斯的回答,这就是我的结尾:

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

interface MYTHEME {
    documentOnLoad: INIT;
    documentOnReady: INIT;
}
interface INIT {
    init: Function;
}
declare var MYTHEME: MYTHEME;

export class AppComponent implements AfterViewInit {

    constructor() {
    }

    ngAfterViewInit() {
        MYTHEME.documentOnLoad.init(); 
        MYTHEME.documentOnReady.init();
    }
}
胡安·门德斯

您必须使用告诉TypeScript有关外部(JavaScript)声明的信息declare参见https://www.typescriptlang.org/docs/handbook/writing-declaration-files.html

interface MyTheme {
    documentOnLoad: Function;
    documentOnReady: Function;
}
declare var MYTHEME: MyTheme;

或匿名

declare var MYTHEME: {documentOnLoad: Function, documentOnReady: Function};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular 2打字稿调用JavaScript函数

来自分类Dev

Angular 2打字稿@injectable

来自分类Dev

Angular 2打字稿:TypeError:this.validator不是一个函数

来自分类Dev

angular 2打字稿中的成员属性和构造函数的语法

来自分类Dev

何时在Angular2打字稿中创建构造函数?

来自分类Dev

组件未渲染Angular 2打字稿

来自分类Dev

Angular2打字稿拖放功能

来自分类Dev

webpack会将Angular2打字稿编译为javascript吗?

来自分类Dev

如何在Angular2 RC5打字稿中调用共享指令的方法?

来自分类Dev

什么是angular2打字稿和angular2 ecma脚本

来自分类Dev

解析器错误:表达式的意外结尾:{{value?}} | Angular 2打字稿

来自分类Dev

在angular2打字稿方法中指定返回类型

来自分类Dev

angular 2打字稿不能在环境上下文中声明实现

来自分类Dev

在Angular 2打字稿应用程序中使用moment.js

来自分类Dev

Angular 2打字稿中@Inject和@Injectable有什么区别

来自分类Dev

如何在Angular 2打字稿中生成md5哈希?

来自分类Dev

扩展http类并访问自定义属性(Angular2打字稿)

来自分类Dev

解析器错误:表达式的意外结尾:{{value?}} | Angular 2打字稿

来自分类Dev

如何在Angular 2打字稿中生成md5哈希?

来自分类Dev

设置angular2打字稿环境时遇到问题

来自分类Dev

扩展http类并访问自定义属性(Angular2打字稿)

来自分类Dev

在Angular 2打字稿中将JSON转换为通用Object []的最佳方法是什么?

来自分类Dev

如何在angular 7打字稿中合并2个数组

来自分类Dev

带有Angular 2打字稿的Visual Studio代码中的重复标识符错误

来自分类Dev

在新路由器上使用订阅功能时出现Angular 2打字稿错误(RC 1)

来自分类Dev

在angular2打字稿应用程序中使用聚合物纸对话

来自分类Dev

在另一个导航组件中使用Angular2打字稿组件

来自分类Dev

如何将小叶路由机包含到angular 2打字稿webpack应用程序中

来自分类Dev

带有Angular 2打字稿的Visual Studio代码中的重复标识符错误

Related 相关文章

  1. 1

    Angular 2打字稿调用JavaScript函数

  2. 2

    Angular 2打字稿@injectable

  3. 3

    Angular 2打字稿:TypeError:this.validator不是一个函数

  4. 4

    angular 2打字稿中的成员属性和构造函数的语法

  5. 5

    何时在Angular2打字稿中创建构造函数?

  6. 6

    组件未渲染Angular 2打字稿

  7. 7

    Angular2打字稿拖放功能

  8. 8

    webpack会将Angular2打字稿编译为javascript吗?

  9. 9

    如何在Angular2 RC5打字稿中调用共享指令的方法?

  10. 10

    什么是angular2打字稿和angular2 ecma脚本

  11. 11

    解析器错误:表达式的意外结尾:{{value?}} | Angular 2打字稿

  12. 12

    在angular2打字稿方法中指定返回类型

  13. 13

    angular 2打字稿不能在环境上下文中声明实现

  14. 14

    在Angular 2打字稿应用程序中使用moment.js

  15. 15

    Angular 2打字稿中@Inject和@Injectable有什么区别

  16. 16

    如何在Angular 2打字稿中生成md5哈希?

  17. 17

    扩展http类并访问自定义属性(Angular2打字稿)

  18. 18

    解析器错误:表达式的意外结尾:{{value?}} | Angular 2打字稿

  19. 19

    如何在Angular 2打字稿中生成md5哈希?

  20. 20

    设置angular2打字稿环境时遇到问题

  21. 21

    扩展http类并访问自定义属性(Angular2打字稿)

  22. 22

    在Angular 2打字稿中将JSON转换为通用Object []的最佳方法是什么?

  23. 23

    如何在angular 7打字稿中合并2个数组

  24. 24

    带有Angular 2打字稿的Visual Studio代码中的重复标识符错误

  25. 25

    在新路由器上使用订阅功能时出现Angular 2打字稿错误(RC 1)

  26. 26

    在angular2打字稿应用程序中使用聚合物纸对话

  27. 27

    在另一个导航组件中使用Angular2打字稿组件

  28. 28

    如何将小叶路由机包含到angular 2打字稿webpack应用程序中

  29. 29

    带有Angular 2打字稿的Visual Studio代码中的重复标识符错误

热门标签

归档