Angular 6 router.events.filter 'filter' does not exist on type 'Observable<Event>'
This is how to filter router events with Angular 6+ and latest RxJS:
import { Component, OnInit } from '@angular/core';import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';import { filter } from 'rxjs/operators';export class MyComponent implements OnInit { constructor(private router: Router, private activatedRoute: ActivatedRoute) {} ngOnInit() { this.router.events.pipe( filter(event => event instanceof NavigationEnd) ).subscribe(() => { console.log(this.activatedRoute.root); }); }}
Uses the pipe
operator instead of attempting to chain filter on the observable.
I don't see in your code if you imported filter
for Rxjs 6:
import { filter } from 'rxjs/operators'; . . . this.router.events.pipe( filter((event:Event) => event instanceof NavigationEnd) ).subscribe(res => console.log(res))
Activated Route wasnt giving me the url. So I tried this.P.S: event['url'] worked instead of event.url
import { filter } from 'rxjs/operators';import { Router,NavigationEnd } from '@angular/router'; router.events.pipe(filter(event => event instanceof NavigationEnd)) .subscribe(event => { this.currentRoute = event['url']; console.log(this.currentRoute); });