#javascript #angular #typescript
Вопрос:
Я пытаюсь добавить фрагмент GTM в свой угловой проект. Но при жесткой перезагрузке страницы он выталкивает данные. При обычной навигации этого не происходит.
Я добавил фрагмент GTM, предоставленный Google, в index.html. что мне нужно сделать следующим шагом?
Что я хочу, это нажать dta на слой данных на каждой странице навигации или на Ngonit каждой страницы?
Комментарии:
1. Добавление фрагмента в index.html этого достаточно, если вы просто хотите отслеживать изменения маршрутизатора, так как в GTM вы можете настроить триггер, который реагирует на изменения местоположения, которые также срабатывают при изменении маршрута.
2. @mikeOne Чего я хочу добиться, так это отправлять разные данные на разные маршруты или страницы
Ответ №1:
существует множество реализованных угловых модулей, которые обеспечивают взаимодействие с GTM и предоставляют некоторые инструменты, например этот https://www.npmjs.com/package/angular-google-tag-manager вот как вы можете нажать событие при каждом изменении маршрута
class AppComponent implements OnInit {
constructor(
private router: Router,
private gtmService: GoogleTagManagerService,
) { }
ngOnInit() {
this.router.events.subscribe(event=> {
if (event instanceof NavigationEnd) {
const gtmTag = {
event: 'page',
pageName: event.url
};
this.gtmService.pushTag(gtmTag);
}
});
}
}
кроме того, вы можете переместить эту логику в Guard
(не забудьте в таком случае добавить ее для маршрутизации)
Комментарии:
1. да, я тоже использовал его, но при жесткой перезагрузке страницы он работает.
2. Уже пробовал это, но при жестком обновлении запускается gtm. не в обычной навигации
3. @Pawan добавил пример в мой пост
4. Спасибо, @icekson использовал его таким же образом, и это решило мою проблему.