想要从js文件访问外部变量到angular 2 ts文件

时间:2017-06-16 15:22:22

标签: javascript angular typescript

在我的角度项目中,我编写了一个js文件来将一些值返回给ts文件。

var webGlObject = (function() { 
  return { 
    init: function() { 
      alert('webGlObject initialized');
    } 
  } 
})(webGlObject||{})
import { Component, OnInit } from '@angular/core';
import '../../../lib/jquery-3.2.1.min.js';
import '../../../server/getSummary.js';

declare var webGlObject: any;

@Component({
  selector: 'mop-designer-dashboard',
  templateUrl: 'mop-designer-dashboard.component.html',
  styleUrls: ['mop-designer-dashboard.component.css'],
})

export class MopDesignerDashboardComponent implements OnInit {

  debugger;
  scoreBoardList: any = [];
  breadcrumb: any = [];

  constructor() {

    /* prepare breadcrumb */
    this.breadcrumb = [
      {
        label: 'Mop Designer',
        href: '/#/mop-designer'
      }
    ];

    debugger;

    webGlObject.init();



  }

  ngOnInit() {
    console.log('test');
  }
}

但声明var webGlObject:any;不会创建任何对象 我得到以下错误:

> ZoneTask.invoke @ zone.js?fad3:339 VM292602:61错误:未捕获(在承诺中):错误:错误:0:0引起:webGlObject未定义 ReferenceError:未定义webGlObject     在新的MopDesignerDashboardComponent

1 个答案:

答案 0 :(得分:1)

这是因为您将其创建为类并用作对象。 试试这个: 将以下内容放在js文件中:

var webGlObject = function() {
this.init= function() {
  alert('webGlObject initialized');}}

在ts文件中创建一个实例:

declare var webGlObject: any;
export class YourComponent{
constructor(){
    let wegObj = new webGlObject();
    wegObj.init();
  }
}