Angular 6 router.events.filter 'filter' does not exist on type 'Observable<Event>' Angular 6 router.events.filter 'filter' does not exist on type 'Observable<Event>' angular angular

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);         });