问题描述
我需要使用sitecore(Beacon.js)跟踪Angular单页应用程序中的所有页面访问 因此,我在inxex.html中添加了这一行,它仅记录一次页面访问,而不是每个组件访问。 有人可以帮我实现这一目标。谢谢...!
我认为我必须在AppComponent中编写一些代码,以便它可以捕获每个路由器事件更改...。但是不确定如何在此处调用beacon.js函数调用...。
解决方法
像这样在每个路由器路径上放置一个canActivateService。
{
path: "dialog",component: DialogComponent,canActivate: [canActivateService]
}
这是服务:
import { ActivatedRouteSnapshot,RouterStateSnapshot } from "@angular/router";
import { Injectable } from "@angular/core";
import { CanActivate } from "@angular/router";
import { RestangularService } from "./restangular.service";
import { EventService } from "./event.service";
@Injectable({
providedIn: "root"
})
export class canActivateService implements CanActivate {
constructor(private rs: RestangularService,private es: EventService) {}
// returns a true or false promise
canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot) {
// all inbound route information is contained in the two params above
// which can be logged,even asynchronously
// return true or false here.
}
}
请注意,还有大约五个其他“可挂接”事件。 canActivate只是其中之一。