Я строю Angular 6 SPA.При использовании Google Analytics я использую следующий код:
<script>
(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', 'https://www.google-analytics.com/analytics.js', 'ga');
ga('create', 'XXXXXXX', 'auto'); //tracking code
в index.html
Поскольку я хочу активировать аналитику для каждой страницы внутри app.component.ts
, у меня есть следующий код:
this.router.events.subscribe(event => {
if (event instanceof NavigationEnd) {
(window as any).ga("set", "page", event.urlAfterRedirects);
(window as any).ga("send", "pageview");
}
}
Пока все хорошо.Проблема с Google Tag Manager
.Вот код в index.html:
<script nonce="1234567890">
(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
}); var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true;
j.nonce = "1234567890"; j.src =
'//www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'XXXXXXXX');
</script>
Выше работает только once
при угловой загрузке.Я не могу найти аналогичный выше способ, чтобы заставить его работать снова, когда маршрутизатор Angular перешел на другой маршрут.Есть идеи?