网站搜索

angular - 如何导入一个在同一命名空间中扩展另一个模块的模块


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

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

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

export class LeafletConsumerService {}

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

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

export class LeafletConsumerService {}

我没有别的方法可以做到这一点吗?有没有一种方法可以导入一个只应该对已加载模块产生副作用的文件?

答案#1

好的,一个快速而简便的解决方案。如果你是从快速启动仓库开始你的项目,这个答案是可行的。进入 system.config.extras.js 并按如下方式扩展你的配置:

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

这意味着我们现在可以这样导入 leaflet

import * as L from 'leaflet';

并按照描述添加我们相应的扩展文件

import 'your-leaflet-extension';

记得为你的扩展扩展类型信息(通过 typings 文件或自己创建)