1
resposta

Outra forma de escutar o evento de navegação

Eu encontrei outra forma de escutar o evento de navegação no construtor de AlertService, para não ter que alterar a forma como estávamos fazendo a navegação em PhotoDetailComponent e PhotoFormComponent

this.router.navigate(['']);

Basta procurar por eventos de NavigationEnd ao invés de NavigationStart em AlertService:

constructor(router: Router) {
        router.events.subscribe((event => {
            if (event instanceof NavigationEnd) {
                if (this.keepAfterRouteChange) {
                    this.keepAfterRouteChange = false;
                } else {
                    this.subject.next(null);
                }
            }
        }));
    }

Percebi que quando ocorre um redirecionamento devido a um Guard, são realmente chamados 2 NavigationStart. Porém, o primeiro é cancelado, sendo apenas o último concluído.

Você vê alguma contra-indicação nessa solução?

1 resposta

Fala aí Guilherme, tudo bem? Geralmente na nossa area na maioria das vezes haverá mais de uma solução para um determinado problema.

Fico feliz que tenha encontrado e buscado uma solução diferente da aula, parabéns.

Sobre a solução, eu não vejo problemas, particularmente quando preciso escutar eventos de navegação também utilizo o NavigationEnd.

Em algumas situações pode ser que realizar a validação no inicio seja a melhor solução para o problema, mas, se no seu caso tudo está funcionando corretamente, então, sem problemas.

Espero ter ajudado e bons estudos.