Я использую Angular 9 и пытаюсь добавить виджет Freshdesk в свое приложение. Фрагмент этого виджета, который выглядит так:

<script>
window.fwSettings={
'widget_id': <MY PERSONAL ID>,
'locale': 'en'
};
!function(){if("function"!=typeof window.FreshworksWidget){var n=function(){n.q.push(arguments)};n.q=[],window.FreshworksWidget=n}}() 

Если я добавлю фрагмент прямо в свой файл index.html, он будет работать нормально, но я хочу иметь возможность программно установить для свойства locale любой язык, выбранный текущим пользователем.

Это означает, что этот фрагмент нужно добавить во время выполнения, но я понятия не имею, как это сделать в Angular.

Любые идеи?

0
Weblurk 8 Сен 2020 в 13:38

1 ответ

Лучший ответ

Я решил это. В моем app.component.ts я помещаю фрагмент в функцию после того, как загрузил локаль приложения:

loadFreshDesk(locale): void {
   window.fwSettings = {
      widget_id: MY_WIDGET_ID,
      locale: MY_FRESH_DESK_LOCALE,
    };

    !(function () {
      if ('function' !== typeof window.FreshworksWidget) {
        const n = function () {
          n.q.push(arguments);
        };
        (n.q = []), (window.FreshworksWidget = n);
      }
    })();
    const script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'https://widget.freshworks.com/widgets/MY_WIDGET_ID.js';
    document.getElementsByTagName('head')[0].appendChild(script);
}
1
Weblurk 15 Сен 2020 в 06:25