Как я могу добавить виджет Freshdesk во время выполнения в Angular?

#angular #freshdesk

#angular #freshdesk

Вопрос:

Я использую 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.

Есть идеи?

Комментарии:

1. Вы можете получить дополнительную помощь в официальном сообществе разработчиков Freshdesk

Ответ №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. это неправильно, вы не можете добавить этот код в файл .ts следующим образом. также как вы можете показать виджет? для этого доступен пакет npm. npmjs.com/package/ngx-freshdesk-webwidget