#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