Косяк в том, что привязанные к карте события
this.myMap.events.add('click' function(e){...}.bind(this))
выполнялись вне ангулара, и, хоть значение переменных изменялось, ангулар не производил ChangeDetection (и принудительный вызов
this.changeDetection.detectChanges()
так же не приводил к обновлению View.
И, как я уже писал, вынесение карты в отдельный компонент, а так же попытка хранить адрес внутри объекта, и попытка менять ссылку на объект, менять стратегию на OnPush - ничего не приводило к желаемому (кажется, от безысходности я перепробовал все возможные комбинации). То ли лыжи не едут, то ли со мной что-то не так)
Моё решение
1. Добавить в импорт и в конструктор ссылку на ngZone
import { ... NgZone ... } from '@angular/core';
constructor(... public zone: NgZone ...) { ... }
2. Выполнять функцию внутри клика внутри этой самой zone
this.myMap.events.add('click', function (e) {
this.zone.run(() => {
... // <- всё что будет написано тут выполнится внутри ангулара и его контекста, и вызовет ожидаемое изменение view
}.bind(this));
Подробнее можно почитать в
документации, на
хабре, и вообще есть миллион статей на тему ngZone.
p.s. Angular 9.1.7, Yandex Maps на текущий момент 2.1.79