Google Analytics嵌入api不适用于Angular 2应用程序

Google Analytics嵌入api不适用于Angular 2应用程序,angular,google-analytics,google-analytics-api,Angular,Google Analytics,Google Analytics Api,我正在使用以下代码将Google Analytics api嵌入我的Angular 2应用程序: Mycomponent.html <div id="embed-api-auth-container"></div> <div id="chart-container"></div> <div id="view-selector-container"></div> <script> gapi.an

我正在使用以下代码将Google Analytics api嵌入我的Angular 2应用程序:

Mycomponent.html

  <div id="embed-api-auth-container"></div>
  <div id="chart-container"></div>
  <div id="view-selector-container"></div>

<script>

  gapi.analytics.ready(function() {

    /**
     * Authorize the user immediately if the user has already granted access.
     * If no access has been created, render an authorize button inside the
     * element with the ID "embed-api-auth-container".
     */
    gapi.analytics.auth.authorize({
      container: 'embed-api-auth-container',
      clientid: My-Client-Id
    });


    /**
     * Create a new ViewSelector instance to be rendered inside of an
     * element with the id "view-selector-container".
     */
    var viewSelector = new gapi.analytics.ViewSelector({
      container: 'view-selector-container'
    });

    // Render the view selector to the page.
    viewSelector.execute();


    /**
     * Create a new DataChart instance with the given query parameters
     * and Google chart options. It will be rendered inside an element
     * with the id "chart-container".
     */
    var dataChart = new gapi.analytics.googleCharts.DataChart({
      query: {
        metrics: 'ga:sessions',
        dimensions: 'ga:date',
        'start-date': '30daysAgo',
        'end-date': 'yesterday'
      },
      chart: {
        container: 'chart-container',
        type: 'LINE',
        options: {
          width: '100%'
        }
      }
    });


    /**
     * Render the dataChart on the page whenever a new view is selected.
     */
    viewSelector.on('change', function(ids) {
      dataChart.set({query: {ids: ids}}).execute();
    });

  });
</script>

gapi.analytics.ready(函数(){
/**
*如果用户已授予访问权限,则立即授权用户。
*如果未创建访问权限,请在
*ID为“嵌入api身份验证容器”的元素。
*/
gapi.analytics.auth.authorize({
容器:“嵌入api身份验证容器”,
我的客户Id
});
/**
*创建新的ViewSelector实例以在
*id为“视图选择器容器”的元素。
*/
var viewSelector=new gapi.analytics.viewSelector({
容器:“视图选择器容器”
});
//将视图选择器呈现到页面。
viewSelector.execute();
/**
*使用给定的查询参数创建新的DataChart实例
*和谷歌图表选项。它将在一个元素中呈现
*id为“图表容器”。
*/
var dataChart=new gapi.analytics.googleCharts.dataChart({
查询:{
指标:“ga:会话”,
维度:“ga:日期”,
‘开始日期’:‘30天Sago’,
“结束日期”:“昨天”
},
图表:{
容器:“图表容器”,
键入:“行”,
选项:{
宽度:“100%”
}
}
});
/**
*每当选择新视图时,在页面上呈现dataChart。
*/
viewSelector.on('change',函数(id){
set({query:{ids:ids}}).execute();
});
});
将我的客户端Id替换为Google客户端Id,并在index.html中在标签中添加loading platform.js代码,如下所示:

     <script>
    (function(w,d,s,g,js,fs){
      g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(f){this.q.push(f);}};
      js=d.createElement(s);fs=d.getElementsByTagName(s)[0];
      js.src='https://apis.google.com/js/platform.js';
      fs.parentNode.insertBefore(js,fs);js.onload=function(){g.load('analytics');};
    }(window,document,'script'));
  </script>

(功能(w、d、s、g、js、fs){
g=w.gapi | |(w.gapi={});g.analytics={q:[],ready:function(f){this.q.push(f);};
js=d.createElement;fs=d.getElementsByTagName[0];
js.src=https://apis.google.com/js/platform.js';
fs.parentNode.insertBefore(js,fs);js.onload=function(){g.load('analytics');};
}(窗口、文档、“脚本”);
我在基于jQuery的应用程序中测试了相同的代码,该应用程序运行良好,但在Angular2应用程序中显示空白页面,没有JavaScript控制台错误

我已经将该网站添加到授权的JavaScript源代码中。对于Angular2应用程序,我们还需要进行其他配置吗


供您参考,我已经创建了oAuth客户端ID,启用了分析API,将网站添加到授权的JavaScript源,并禁用了adblocker。

组件HTML文件中的脚本标记为

因此,您需要将gapi.analytics.ready函数移动到ngOnInit()函数中的Mycomponent.ts文件中


index.html文件中的脚本标记很好,您可以保留它。

您找到这个了吗?我有一个类似的设置,并试图找出如何让这在angular 4工作。如果你把它作为一个独立的东西,它是可以工作的,但我不能让它工作,否则…你成功了吗?我也有同样的问题