У меня есть приложение с ионным/угловым2. Существует карта google, которая загружается в представление. У меня есть наблюдаемый вызванный markers
, который является массивом объектов маркера google maps. Я подталкиваю их к массиву, чтобы заставить их появиться на карте. Затем я добавляю слушателей событий ко всем маркерам. Щелчок функциональен, однако я теряю доступ к this.markers
. Почему это происходит? Возможно, лучший вопрос заключается в том, как создать прозрачную переменную, доступную во всем классе?Angular2: потеря доступа к наблюдаемому
Вот мой код:
export class MapView
{
markers: any;
ngOnInit()
{
//initialization for map and the raw marker array data not shown
this.addListeners()
}
addListeners() //functions properly (this.markers is accessible)
{
console.log(this.markers) //displays the markers array properly
for(var i = 0; i < this.markers.length; i++)
{
this.markers[i].addListener("click",this.markerClicked, this);
}
}
markerClicked(marker) //the clicked marker is passed
{
console.log(this.markers);
//here is the problem. The console says that the markers array is empty
//when called from this function
}
}
Это сработало отлично! Еще один дополнительный вопрос: есть ли способ выяснить, какой из маркеров из массива был нажат? Я пытался передать индекс 'i' функции стрелки, но я не мог заставить это работать. Любые другие идеи? –
Если вы хотите остаться в линии с помощью API GMaps, вам необходимо прикрепить другой прослушиватель событий к самому маркеру, т. Е. 'Marker.addListener ('click',() => {...})'. Затем вы можете повторно использовать переменную 'marker' из функции стрелки, если вам нужно. – AngularChef