从Angular4组件内的外部Javascript文件调用函数表达式

从Angular4组件内的外部Javascript文件调用函数表达式,javascript,angular,typescript,d3.js,Javascript,Angular,Typescript,D3.js,在我使用Angular4和angularcli开发的web应用程序中,我很难从外部Javascript文件(称为roadmap.js)调用函数表达式。Roadmap.js基于d3.js,可在公共Github回购协议上获得 目前,我有: 通过npm安装d3和@types/d3 调整roadmap.js文件以隔离解析函数后,将其放在my asset文件夹中 在roadmap.component.ts中导入d3 声明了parse,我想在我的组件中调用的函数,作为ts文件顶部的任意变量 在ngOnIni

在我使用Angular4和angularcli开发的web应用程序中,我很难从外部Javascript文件(称为roadmap.js)调用函数表达式。Roadmap.js基于d3.js,可在公共Github回购协议上获得

目前,我有:

  • 通过npm安装d3和@types/d3
  • 调整roadmap.js文件以隔离解析函数后,将其放在my asset文件夹中
  • 在roadmap.component.ts中导入d3
  • 声明了parse,我想在我的组件中调用的函数,作为ts文件顶部的任意变量
  • 在ngOnInit()中调用函数
  • roadmap.component.ts

    declare var parse: any;
    
    import { Component, OnInit } from '@angular/core';
    import { DataService } from '../../../services/data/data.service';
    import * as d3 from 'd3';
    import '../../../../assets/js/roadmap.js';
    @Component({
      selector: 'roadmap',
      templateUrl: './roadmap.component.html'
    })
    
    export class RoadmapComponent implements OnInit {
        constructor(private dataService: DataService){}
        ngOnInit() {
            new parse(); // Here is the function I'd like to call. It's defined 
                         // in roadmap.js file
        }
    }
    
    roadmap.js

    // Code before this
    var parse = function() {
        // Tasks
        var colors = d3.scale.category20();
        // More code 
    };
    // Code after this
    
    我没有收到来自编译器的错误,但在我的浏览器控制台中,我可以看到函数parse未定义--> 错误:未捕获(承诺中):引用错误:未定义解析 ReferenceError:未定义解析

    我错过了什么?
    N.B:我修改后的roadmap.js版本是在一个经典的html/js网站上运行的,所以问题不应该来自这个js文件。

    如果你要使用
    声明
    ,请取出该文件的import语句,并在索引上包含一个标记
    import
    是用于模块的
    roadmap.js
    不是一个导出东西的模块,它是一个全局函数。谢谢,它有帮助,但路线图不会呈现,因为未定义函数@Mark我很困惑:我应该如何处理这个js文件来调用其中的函数,不必直接在组件中用typescript重写它?你有@AlbanLePape吗?你有没有像@megg说的那样尝试过。在
    index.html中使用
    导入它,通过在浏览器控制台中调用
    parse
    检查roadmap.js是否已加载。