javascript - Angular 6 и Yandex Map API


0

хочу в темплейте у балуна карты вызвать (click)="open()" но метод open не вызывается. В чем причина?

             balloonContentLayout = ymaps.templateLayoutFactory.createClass(<div><button class="btn btn-danger" data-toggle="modal" data-target="exampleModal" onclick="this.open();">Click</button></div>

  open() {
    console.log(test2);
  }
Источник
  •  254
  •  1
  • 30 янв 2019 2019-01-30 19:00:41
Спасибо за совет! А как мне тогда сделать чтобы ссылался на компонент? — 2 янв 20192019-01-02 12:22:51.000000
Потому что this в onclick ссылается на инстанс класса HTMLButtonElement, а не на инстанс компонента — 31 янв 20192019-01-31 07:11:39.000000

1 ответ

-2
  1. вам нужно назначить mainClass.

    var mainClass = this;

  2. не выполняется потому что необходимо прописать : onclick="function(){mainClass.open();};"

  3. выполнять создание блока в строку не рекомендуется. вот небольшой пример как это надо делать:

        var mainClass = this;
    
        if (!$(#modal-overlay).length) {
            var overlay = $(<div>, {id: modal-overlay});
            overlay.addClass(modal-overlay);
            overlay.addClass(closed);
            overlay.click(function() {mainClass.save();});
            $(body).append(overlay);
        }
    

    Это кусок из моего кода. Думаю вы сможете разобраться как нужно строить блоки.

Что это за бред вообще если указан тег angular6? — 31 янв 20192019-01-31 07:11:10.000000