我试图为Leaflet.ActiveLayers编写声明文件并将其包含在Angular服务中。
声明文件如下:
import * as L from 'leaflet';
import * as ActiveLayers from 'leaflet.active-layers';
declare module 'leaflet.active-layers' {
declare function getActiveBaseLayer();
declare function getActiveOverlayLayers();
declare function onAdd();
}
并在index.d.ts
node_module/@types/leaflet.active-layers
该文件包含在Angular服务中:
import { Injectable } from '@angular/core';
import * as Leaflet from 'leaflet';
import * as ActiveLayer from 'leaflet.active-layers';
declare var L: any;
@Injectable()
export class MapService {
public activeLayer: any;
constructor() {}
init() {
this.activeLayer = ActiveLayer.getActiveBaseLayer();
console.log(this.activeLayer);
}
}
所以我可以访问getActiveBaseLayer方法,但是服务在编译期间无法找到模块:
ERROR in ./src/main/webapp/app/leaflet/services/map-service.ts
Module not found: Error: Can't resolve 'leaflet.active-layers' in 'C:\project\src\main\webapp\app\leaflet\services'
@ ./src/main/webapp/app/leaflet/services/map-service.ts 25:30-62
@ ./src/main/webapp/app/leaflet/leaflet.module.ts
@ ./src/main/webapp/app/app.module.ts
@ ./src/main/webapp/app/app.main.ts