import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, RouterStateSnapshot } from '@angular/router'; import { MetaService } from '../services'; @Injectable() export class MetaGuard implements CanActivate, CanActivateChild { constructor(private readonly service: MetaService) {} public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { const url = state.url; const settings = route.hasOwnProperty('data') && route.data.meta; if (settings) { this.service.update(url, settings); } return true; } public canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { return this.canActivate(route, state); } }