Код ниже прекрасно работает во время выполнения, но получает ошибку во время компиляции, которая не позволяет мне создавать производственный код, если я не игнорирую ошибки, которые я не хочу делать.
Я не могу привести к маркерному объекту, поскольку маркер представляется методом.
HTML
<div class="map-frame" leaflet [leafletOptions]="options"
[leafletLayers]="markers" [leafletLayersControl]="layersControl"
[(leafletCenter)]="center" (leafletMapReady)="onMapReady($event)"
(leafletCenterChange)="onCenterChange($event)"
(leafletMouseMove)="onMouseMove($event)"></div>
TypeScript
markers: Layer[] = [];
var markerObj: MarkerModel = {};
markerObj.guid = this.utils.uuidv4();
markerObj.iconUrl = pItem;
markerObj.latitude = this.lat;
markerObj.longitude = this.lng;
const newMarker = marker(
[markerObj.latitude, markerObj.longitude],
{
icon: icon( {
iconSize: [38, 38],
iconAnchor: [13, 13],
iconUrl: pItem
} ),
title: markerObj.guid
}
).on( 'click', () => {
this.zone.run(() => {
this.onMarkerClick( markerObj );
} );
} );
this.markers.push( newMarker );
for ( var i = this.markers.length - 1; i >= 0; i-- ) {
console.log( i, this.markers[i].title ); //compile time error
if ( this.markers[i].title == pGuid ) { //compile time error
this.markers.splice( i, 1 );
//todo update server
break;
}
}
ОШИБКА в src / app / map / map.component.ts: 265: 49 - ошибка TS2339: свойство 'title' не существует для типа 'Layer'.