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?