我有一个新的Angular 2应用程序(最新完整版),我希望每次用户导航时都知道当前的url和目标url,无论是通过单击链接还是键入浏览器的地址栏。我希望能够决定是否允许他们访问网址,如果不允许他们回到原始网址。我想要在任何一种情况下更新地址栏中的URL。我尝试了以下但是这些并没有提供oldUrl只有NewUrl。
router.events.subscribe((event: NavigationEvent) =>
{
if (event instanceof NavigationStart)
{
}
if (event instanceof NavigationEnd)
{
}
if (event instanceof NavigationCancel)
{
}
});
我很容易在Angular 1中用范围实现这个。$ on('$ locationChangeStart',function(event,newUrl,oldUrl)和scope。$ on('$ routeChangeSuccess',function(evt,newUrl,oldUrl) )。
请帮忙。
答案 0 :(得分:0)
尝试以下Guard,它提供包含所需URL的oldState和newState。如果有帮助的话,取决于你的用例。
export class PendingChangesGuard implements CanDeactivate<Shipments> {
constructor(@Inject(ComponentService) private _service:ComponentService){}
@HostListener('window:beforeunload')
canDeactivate(component: Shipments,
currentRoute: ActivatedRouteSnapshot,
currentState: RouterStateSnapshot,
nextState: RouterStateSnapshot): Observable<boolean> | boolean {
console.log(nextState)
return this._service.getSelectedMaterials().length < 0 ? true : window.confirm("Are you sure you want to Exit??") ;
}
}