I have finished to update my App to Angular 6 (it was in 5.2 version).
I got an error syntax in :
import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';
import { filter } from 'rxjs/operators';
...
constructor(private router: Router) {}
this.router.events.filter
(event => event instanceof NavigationEnd).subscribe((res) =>
{
// DO something
});
error TS2339: Property 'filter' does not exist on type 'Observable'.
what's the right syntax in Angular 6 ?
thanks
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);
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With