activatedroute - router navigate angular 5
Angular 6 router.events.filter ''filtro'' no existe en el tipo ''Observable<Event>'' (2)
He terminado de actualizar mi aplicación a Angular 6 (estaba en la versión 5.2).
Tengo una sintaxis de error en:
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: La propiedad ''filtro'' no existe en el tipo ''Observable''.
¿Cuál es la sintaxis correcta en Angular 6?
Gracias
Esta es la forma de filtrar eventos de enrutador con Angular 6+ y el último 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);
});
}
}
Utiliza el operador de pipe
lugar de intentar un filtro de cadena en lo observable.
No veo en tu código si importaste filtro
para Rxjs 6:
import { filter } from ''rxjs/operators'';
.
.
.
this.router.events.pipe(
filter((event:Event) => event instanceof NavigationEnd)
).subscribe(res => console.log(res))