События API карты Google не обезьяны, пропатченные зоной. js и поэтому не запускаются в ngZone. Вы должны вручную повторно войти в зону, используя ngZone.run()
:
constructor(private ngZone: NgZone) {}
markerClick(params: Marker[]) {
this.ngZone.run(() => {
this.popupIsOpen = !this.popupIsOpen;
const marker: Marker = params[1] as Marker;
});
}
Также существует вероятность, что вы теряете контекст this
, поскольку вы не связываете события должным образом. Существует несколько вариантов, один из которых заключается в использовании функции привязки анонимной стрелки при привязке:
marker.on(GoogleMapsEvent.MARKER_CLICK).subscribe((params) => this.markerClick(params));