Вызов zone.run во всплывающем окне с приложением Angular5

У нас есть приложение angular5 со встроенной листовкой. Эта карта привязывает всплывающее окно к различным точкам, которые, в свою очередь, открывают компонент деталей. Этот запутанный процесс прекрасно работает в chrome и firefox, но завершается с загадочной "синтаксической ошибкой" в Internet Explorer. Вы можете просмотреть приложение по адресу: http://ptappdev.gisdata.mn.gov/ptappt

Нажмите на любой из маркеров карты и затем нажмите "просмотреть детали".

В случае, если это проблема с вложенными цитатами javascript, я перепробовал целый ряд избегающих шаблонов. Все еще не повезло. Код, генерирующий это всплывающее окно:

        layer.bindPopup('<p>' + feature.properties[Object.keys(feature.properties)[0]] + '<br /><a target="_blank" href="' + feature.properties['park_home_page_url']
      + '">open website</a><br /><a href="javascript:void(0);" '
      + 'OnClick = "'
    //+ 'alert(&apos;test&apos;);'
      + 'window[&apos;angularComponentRef&apos;].zone.run(() => {window[&apos;angularComponentRef&apos;].component.showResultDtlViaMapTip('
      + '&quot;' + feature.properties['name'] + '&quot;,'
      + '&quot;' + feature.properties['id'] + '&quot;,'
      + '&quot;' + feature.properties['park_admin_id'] + '&quot;'
      + ');})'
      + '" style="cursor: pointer; cursor: hand; ">view details</a></p>'); // 1 initial load
  }
}).addTo(this.map)//.on('click', this.onMarkerClick);

В результате HTML-это:

<a href="javascript:void(0);" onclick="window['angularComponentRef'].zone.run(() => {window['angularComponentRef'].component.showResultDtlViaMapTip(&quot;Upper Sioux Agency State Park&quot;,&quot;530&quot;,&quot;spk00277&quot;);})" style="cursor: pointer; cursor: hand;">view details</a>

Любые идеи о том, является ли это синтаксической ошибкой с зоной или проблемой с моими вложенными кавычками. Или, может быть, что-то еще полностью? Буду благодарен за любую помощь.

2 ответа

Решение

Функции стрелок были введены в ES2015 и не поддерживаются в Internet Explorer.

Ваше выражение выглядит совместимым с использованием нормального function, так что простая замена вашей функции стрелки на нормальную должна решить вашу синтаксическую ошибку при сохранении функциональности.

Спасибо за предложение по исправлению. Для справки, вот новый функциональный переписанный код, не использующий функции стрелок:

<span onclick="window['angularComponentRef'].zone.run(function() {return window['angularComponentRef'].component.showResultDtlViaMapTip('Hill-Annex Mine State Park','210','spk00176')});">view details</span>
Другие вопросы по тегам