ddubrava / angular-yandex-maps

🗺️ Yandex.Maps Angular components that implement the Yandex.Maps JavaScript API
https://ddubrava.github.io/angular8-yandex-maps/#/
MIT License
57 stars 7 forks source link

❓ - Не работает интерполяция проперти в openbaloon #230

Closed EgorkZe closed 7 months ago

EgorkZe commented 8 months ago

Description

Пытаюсь сделать расчет доставки через свой бэк, ловлю событие openbaloon (клик на метке), делаю запрос и в ответе устанавливаю проперти, но оно отображается только тогда, когда балун закрывается, как это можно исправить?

код Эвента:

onPlacemarkBalloonOpen(event: YaEvent<ymaps.Placemark>): void {
    const { target } = event;

    var pickpoint: PickPoint = target.properties.get("pickpointData") as PickPoint;
    var self = this;

    this.orderService.getDeliveryCost(pickpoint.Code, "", 1).subscribe((cost) => {
      console.log(cost.price); // тут все правильно выводится
      self.dCost = cost.price + "Р."; // свойство устанавливается, но не рендерится, рендер происходит только после закрытия балуна
    });
  }

Код елемента:

<span class="price-span"> {{ dCost }} </span>

код карты:

 <ya-map [center]="[55.751574, 37.573856]" [zoom]="9" [state]="{ behaviors: ['default', 'scrollZoom'] }" (ready)="onMapReady($event)" [options]="{ balloonMaxWidth: 200 }" (yaclick)="onMapClick($event)" (yacontextmenu)="onMapContextMenu($event)">
        <ya-clusterer [options]="clustererOptions" (ready)="onClustererReady($event)">
          <ya-placemark *ngFor="let placemark of placemarks" [geometry]="placemark.geometry" [properties]="placemark.properties" (balloonopen)="onPlacemarkBalloonOpen($event)"></ya-placemark>
        </ya-clusterer>
      </ya-map>
ddubrava commented 8 months ago

Привет, сделай, пожалуйста, полный reproduction. У тебя OnPush? Тебе надо либо async использовать, либо markForCheck вызвать в подписке