如何在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中添加它。

有什么想法吗?

解决方法

我解决了。在我的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);
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...