有几个问题:
- 抽奖选项不太正确。不过,这实际上并没有导致错误。
- 有一个错误传单绘制会导致您看到的异常。
传单绘制选项
square
不是平局选项。正确的选项是rectangle
。此外,默认情况下启用所有处理程序。所以,你只需要关闭你不想要的那些。
所以,我认为你想要的是你的app.component.ts
文件:
public drawOptions = {
position: 'topright',
draw: {
marker: {
icon: L.icon({
iconSize: [25, 41],
iconAnchor: [13, 41],
iconUrl: 'assets/marker-icon.png',
shadowUrl: 'assets/marker-shadow.png'
})
},
polygon: false,
circlemarker: false
}
};
以上将确保启用标记、圆形、矩形和折线,而禁用其他。您要确保将传单资产 png 文件添加到文件中 Angular CLI 导出的资产列表中angular.json
。
识别和修复错误
Leaflet-draw 的构建有些奇怪,导致源映射无法工作。为了让它们工作,我必须直接导入leaflet.draw-src.js
文件。
在顶部app.component.ts
,我添加了:
import * as L from 'leaflet';
import '../../node_modules/leaflet-draw/dist/leaflet.draw-src.js'; // add this
这使您可以在传单绘制代码中放置一个断点来弄清楚发生了什么。这样做后,看起来有一个名为的变量type
在分配之前未声明。代码在严格模式下运行,所以这将引发异常。这看起来是传单绘制中的错误。
解决方案 1:禁用 ShowArea
首先,您可以禁用showArea
,这将阻止问题代码运行。为此,请修改drawOptions
:
public drawOptions = {
position: 'topright',
draw: {
marker: {
icon: L.icon({
iconSize: [25, 41],
iconAnchor: [13, 41],
iconUrl: 'assets/marker-icon.png',
shadowUrl: 'assets/marker-shadow.png'
})
},
rectangle: { showArea: false }, // disable showArea
polyline: true,
polygon: false,
circlemarker: false
}
};
这不是一个很好的解决方案,因为您失去了 showArea 功能。
解决方案 2:禁用严格模式
另一种解决方案是禁用 Typescript 编译器的严格模式。
为此,请编辑您的tsconfig.json
和tsconfig.app.json
文件,"noImplicitUseStrict": true
在compilerOptions
属性下添加。
这解决了问题,但现在您没有在严格模式下运行代码,这可能会导致其他问题。