Как импортировать модуль, который расширяет другой в том же пространстве имен
Простой дорожный блок. Мне нужно использовать 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 {}
Разве нет другого способа сделать это? Есть ли способ импортировать один файл, который должен просто вызвать побочный эффект на уже загруженный модуль?
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';
Не забудьте расширять информацию о типах для ваших расширений (через файл наборов или сделайте свой собственный)