Как импортировать модуль, который расширяет другой в том же пространстве имен

Простой блокпост. Мне нужно использовать 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 {}

Нет ли другого способа сделать это? есть ли способ импортировать один файл, который должен вызвать побочный эффект на уже загруженный модуль?


person hanzo2001    schedule 15.12.2016    source источник


Ответы (1)


Хорошо, быстрое и грязное решение. Этот ответ работает, если вы начинаете свой проект с быстрого репозитория. Перейдите к 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';

Не забудьте расширить информацию о типе для ваших расширений (через файл типизации или сделать свой собственный)

person hanzo2001    schedule 09.01.2017