Angular 2:从typescript调用Javascript函数



angularjs node.js (0)

我正在创建一个Angular 2应用程序,其中我有一个应该呈现数据列表到相应视图的组件。 数据将通过来自JSON文件的服务加载,该文件应该从网页抓取工具的JavaScript函数中获取数据。 这个javascript函数应该在组件初始化之后被调用,之后服务将被启动。

我已经到处寻找SO和其他地方,但还没有找到一个确定的方式来执行一个组件的JavaScript函数。 我发现最接近的方法是在这个SO帖子中 ,它实现了打字稿界面,以加载JavaScript函数。 问题是,从帖子中不清楚javascript函数是什么或者它如何在组件中使用。 在我的情况下,我需要调用基于本教程的封装在以下类中的request()方法:

Scraper = function(url){
request(url, function(error, response, html){
    if(!error){
        var $ = cheerio.load(html);

    var title, release, rating;
    var json = { title : "", release : "", rating : ""};

    $('.header').filter(function(){
        var data = $(this);
        title = data.children().first().text();            
        release = data.children().last().children().text();

        json.title = title;
        json.release = release;
    })

    $('.star-box-giga-star').filter(function(){
        var data = $(this);
        rating = data.text();

        json.rating = rating;
    })
}
fs.writeFile('output.json', JSON.stringify(json, null, 4), function(err){

    console.log('File successfully written! - Check your project directory for the output.json file');

})

// Finally, we'll just send out a message to the browser reminding you that this app does not have a UI.
res.send('Check your console!')

    }) ;
}

在打字稿文件的内部,我正在考虑实施这样的事情:

interface Scraper {
    request: INIT;

}
interface INIT {
    init: Function;
}
declare var Scraper: Scraper;

然后在组件类的ngOnInit()函数中:

ngOnInit(): void{
       //Calling javascript function?
        Scraper.request.init();

       //Service to load JSON
        this._productService.getProducts()
            .subscribe(products => this.products = products,
            error => this.errorMessage = <any>error);
    }

我不知道这是否是接口的正确用法,因为很难从打字稿中得知

我想我可能在这里是正确的,但我并不确定。 我应该如何实现接口来执行组件初始化的request()方法?





web-scraping