Html 如何在Angular2中实施谷歌分析?
我在尝试在angular2中实现谷歌分析时遇到了一个问题。 根据我找到的信息,作为例子,这似乎很容易。但到目前为止,我还没有找到任何不是从Html 如何在Angular2中实施谷歌分析?,html,angular,typescript,google-analytics,Html,Angular,Typescript,Google Analytics,我在尝试在angular2中实现谷歌分析时遇到了一个问题。 根据我找到的信息,作为例子,这似乎很容易。但到目前为止,我还没有找到任何不是从.html而是从.ts的例子 我正在尝试用google analytics创建一个私有方法,然后在构造函数中调用它。差不多吧 constructor() { this.initializeAnalytics(); } private initializeAnalytics() { (function (i, s, o, g, r, a, m) {
.html
而是从.ts
的例子
我正在尝试用google analytics创建一个私有方法,然后在构造函数中调用它。差不多吧
constructor() {
this.initializeAnalytics();
}
private initializeAnalytics() {
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
...
...
}
但是仅仅放置google analytics代码是不起作用的(错误:提供的参数与调用目标的任何签名都不匹配)。我可能做得不对
我怎样才能做到这一点?我就是这样做到的
您需要将ga代码放入index.html中。
(不要忘记注释以下行:/ga('send','pageview');)
然后,在导入之后,需要将ga函数声明到app.component.ts文件中:
import { ... } ...;
declare var ga:Function;
@component(...)
然后,您可以在app.component.ts中订阅路由更改事件,并按如下方式发送ga数据:
this.router.events.subscribe((event:Event) => {
// Send GA tracking on NavigationEnd event. You may wish to add other
// logic here too or change which event to work with
if (event instanceof NavigationEnd) {
// When the route is '/', location.path actually returns ''.
let newRoute = this.location.path() || '/';
// If the route has changed, send the new route to analytics.
if (this.currentRoute != newRoute) {
ga('send', 'pageview', newRoute);
//console.log('would send to ga: ' + newRoute);
this.currentRoute = newRoute;
}
}
});
您需要将代码转换为Typescript。目前它是Javascript。功能在
function (i, s, o, g, r, a, m)
有7个非可选参数,但此行中仅提供5个:
(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga')
您需要将其余参数设置为可选参数,如下所示:
function (i, s, o, g, r, a?, m?)
然后,您还需要从以下位置更改另一行:
}, i[r].l = 1 * new Date();
到
},i[r].l=1*新日期();
最终代码可能如下所示:
(function (i, s, o, g, r, a?, m?) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * <any>new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
(功能(i、s、o、g、r、a、m){
i['GoogleAnalyticsObject']=r;
i[r]=i[r]| |函数(){
(i[r].q=i[r].q | |[]).push(参数)
},i[r].l=1*新日期();
a=s.createElement(o),
m=s.getElementsByTagName(o)[0];
a、 异步=1;
a、 src=g;
m、 parentNode.insertBefore(a,m)
})(窗口,文档,“脚本”,“www.google-analytics.com/analytics.js”,“ga”);
谢谢您的回答,但这与我发现的完全相同(查看链接url),我得到了类似于window.dataLayer=window.dataLayer | |[]的代码;函数gtag(){dataLayer.push(arguments);}gtag('js',new Date())代码>不同于ga('send','pageview');)代码>用于index.html。你要哪一个use@ThilakRaj原始代码在这里可用。看起来他们用新的东西更新了代码。我还不知道如何实现它。请检查一下。
(function (i, s, o, g, r, a?, m?) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * <any>new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');