Closed FrolovIgor closed 3 years ago
Привет, т.к. resultshow
не в зоне, то он не триггерит change detection, поэтому нет изменений во view. Необходимо либо вызвать detectChanges()
, либо обернуть коллбек в зону. (подробнее тут)
detectChanges()
здесь выкидывает ошибки и не работает, т.к.он почему-то вызывается на дестроенном компоненте, поэтому не используем его тутpublic searchInit(event: YaEvent<ymaps.control.SearchControl>): void {
event.target.events.add('resultshow', (e: ymaps.Event) =>
this._zone.run(() => {
const index = (e.get('index') as unknown) as number;
const tmp = event.target.getResultsArray()[index] as any;
const coords = tmp.geometry._coordinates;
this.points = [];
this.points.push(new Point(coords[0], coords[1], 100));
}),
);
}
p.s. Наши типы и доки яндекса очень большие и немного кривые, поэтому приходится костылить any & unknown
Спасибо большое! этот вариант мне помог)
🌎 Environment
Angular CLI: 11.2.3 Node: 12.13.0 OS: darwin x64
Angular: 11.2.4
"angular8-yandex-maps": "11.0.2"
✍️ Description
Добрый день! задавал вопрос [#72] по поводу автоматического открывания ballon, теперь использую метод (ready) геообъекта. Нашел проблему с его работой. Если вкратце: Навесил на событие resultshow объекта searchControl добавление новой точки. Иногда оно срабатывает, иногда нет, помогает только изменение размера окна или зума на карте. Добавление новой точки по клику на карте отрабатывает всегда.
Если отключить событие геообъекта (ready) - точки всегда добавляются и через поиск и через клик на карте.
Пример кода create-geoobject-onsearch-result