【问题标题】:How to import a module that extends another on the same namespace如何导入在同一命名空间上扩展另一个模块的模块
【发布时间】:2016-12-15 10:58:20
【问题描述】:

一个简单的路障。我需要在我的一些服务中使用 Leaflet 和 Leaflet-Draw 插件。

我不知道如何导入完整的模块(核心和插件)

// the core
import * as L from 'leaflet';
// extension
import 'leaflet-draw';

export class LeafletConsumerService {}

我有一个我不太喜欢的解决方案。我通过在index.html 中硬链接它们来加载库,消费者只需对类型文件有一个引用声明

/// <reference path="../typings/index.d.ts" />

export class LeafletConsumerService {}

没有其他方法可以做到这一点吗?有没有办法导入一个只会对已加载的模块产生副作用的文件?

【问题讨论】:

    标签: angular typescript import leaflet leaflet.draw


    【解决方案1】:

    好的,一个快速而肮脏的解决方案。如果您从 quickstart repo 开始您的项目,则此答案有效。转到system.config.extras.js 并像这样扩展您的配置:

    System.config({
        map: {
            'leaflet': 'npm:leaflet/dist/leaflet.js'
        },
        packages: {
            leaflet: {
                defaultExtension: 'js'
            },
        }
    });
    

    这意味着我们现在可以像这样导入传单

    import * as L from 'leaflet';
    

    并按照说明添加我们相应的扩展文件

    import 'your-leaflet-extension';
    

    记得为您的扩展扩展类型信息(通过类型文件或自己制作)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      相关资源
      最近更新 更多