angular - 在 Angular 中使用 Leaflet 时缺少属性错误
问题描述
我正在尝试使用 Leaflet 和 Leaflet Routing Machine。我使用以下命令安装传单和传单路由机,
npm i leaflet
npm i --save-dev @types/leaflet
npm i leaflet-routing-machine
npm i --save-dev @types/leaflet-routing-machine
导入传单并使用它很好,但是当我尝试使用传单路由机器时,它给了我错误。
以下是我的代码,
L.Routing.control({
waypoints: [
L.latLng(latitude, longitude),
L.latLng(latitude, longitude),
],
show: false,
lineOptions: {styles: [{color: randomColor, opacity: 1, weight: 5}],},
createMarker: function () {
return null;
},
}).addTo(this.map);
我使用 webstorm 作为 IDE,我得到 2lineOptions
和createMarker
. 我在纯 JavaScript 中有相同的代码,它工作正常,但对于 Angular,它给了我这个错误。
因为lineOptions
它说以下,当我添加那些缺少的参数时,错误消失了,但我不想放那些参数。
TS2739:类型'{样式:{颜色:字符串;不透明度:数字;重量:数量;}[]; }' 缺少“LineOptions”类型的以下属性:extendToWaypoints、missingRouteTolerance
因为createMarker
它说以下,
TS2345:类型参数'{路由器:MapBox; 航路点:LatLng[]; 显示:假;createMarker: () => null; }' 不可分配给“RoutingControlOptions”类型的参数。对象字面量只能指定已知属性,并且在“RoutingControlOptions”类型中不存在“createMarker”。
既然它在 JavaScript 中工作,为什么它不能在 Angular 中工作?
解决方案
createMarker
上不存在RoutingControlOptions
。将其从对象中移除。
但是,有一个plan: Plan
成员可以传递PlanOptions
给包含 的构造函数createMarker
。
LineOptions
必须定义extendToWaypoints
和missingRouteTolerance
。如果您“不想要”它们,请将它们设置为有意义的值 - 例如false
forextendToWaypoints
和0
for missingRouteTolerance
。
JavaScript 实现可能会忽略未知,并且对于您传递的选项对象中的未定义键值具有合理的默认值。但是,TypeScript 定义更加严格。也有可能它不是绝对正确输入的。
推荐阅读
- bootstrapvalidator - 如何使用引导验证器验证动态生成的字段。`错误无法读取未定义的属性'应用'`
- c# - SignalR - 更改服务器超时响应
- python - 更改 AJAX 页面中的下拉值后,Python Selenium Webdriver 不刷新 html
- javascript - 使用 jQuery 为 WPForms 隐藏/条件字段设置动画
- asp.net - NSwag - 使用 .NET Framework Global.asax 设置修改主机、方案等
- networking - hyper-v VM 上的 minikube 无法 ping Windows 10 主机
- generics - 有没有办法使用泛型类型别名作为 Rust 中函数的泛型类型
- macos - CTFontManagerRegister... 用于第 3 方应用
- rust - 如何将表示“Request”的 HTTP 文本数据解析为“net::http::Request”对象?
- ios - iOS/Swift 从右侧而不是底部打开键盘