Saltar al contenido

Eventos de enrutador angular: NavigationEnd – Cómo filtrar solo el último evento

Solución:

PD. Hay una mejor manera de filtrar usando una instancia de typeguard, luego obtienes el tipo correcto sin tener que afirmarlo nuevamente:

firstChildData$ = this.router.events.pipe(

            filter((e): e is NavigationEnd => e instanceof NavigationEnd), 

            map(e => { // e is now NavigationEnd }

ingrese la descripción de la imagen aquí

De acuerdo, después de leer los artículos publicados anteriormente y repensar lo que realmente quiero lograr, descubrí que mi enfoque era definitivamente demasiado complicado. Porque en realidad solo necesito acceso a la ruta llamada actualmente. Entonces comencé desde cero y encontré esta pequeña pero muy efectiva solución:

this.router.events.subscribe(value => {
    console.log('current route: ', router.url.toString());
});

¡Gracias a todos los que compartieron un comentario para apoyarme! Ayudó mucho ya que pude atar cabos sueltos.

Si está utilizando el efecto ngrx, puede crear un efecto que escuche el evento del enrutador:

import { NavigationEnd, Router } from '@angular/router';

routeTo$ = createEffect(
    () =>
        this.router.events.pipe(
            filter(event => event instanceof NavigationEnd),
            withLatestFrom(this.observable1$, this.observable1$),
            tap(([routerEvent, observable11Value, observable12Value]) => {
                if (this.router.url.includes(observable11Value) && !this.router.url.includes(observable12Value)) {
                    this.router.navigate([`/home/${observable11Value}`]);
                }
            })
        ),
    { dispatch: false }
);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *