sidenav.service.ts 1.1KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { Injectable } from "@angular/core";
  2. import { Router } from "@angular/router";
  3. import { Observable } from "rxjs";
  4. import { map, filter } from "rxjs/operators";
  5. @Injectable()
  6. export class SidenavService {
  7. selectedElement;
  8. currentRouteChange: Observable<string>;
  9. currentRoute: string;
  10. constructor(
  11. private _router: Router
  12. ){
  13. this.currentRoute = this._router.routerState.snapshot.url;
  14. this.currentRouteChange = this._router.events.pipe(
  15. filter((status : any) => status.urlAfterRedirects !== undefined && status.state === undefined),
  16. map((status : any) => {
  17. this.currentRoute = status.urlAfterRedirects;
  18. return status.urlAfterRedirects;
  19. })
  20. )
  21. }
  22. clickItem(event: any, route: string) {
  23. if(this.selectedElement !== event.target.parentElement.parentElement && event.target.parentElement.parentElement.tagName === 'LI')
  24. this.setSelectedItem(event.target.parentElement.parentElement)
  25. }
  26. setSelectedItem(element: Element) {
  27. if(this.selectedElement) this.selectedElement.classList.remove('active-item')
  28. this.selectedElement = element;
  29. this.selectedElement.classList.add('active-item')
  30. }
  31. }