在我的Angular应用程序中,我希望有两个单独的“找不到页面”页面。
在应用程序根目录中,有一种情况是用户进行如下操作:http://localhost:4200/xyz。很好。
但是,我在管理模块上添加了一个AuthGuard。如果用户已登录并导航至http://localhost:4200/admin/xyz,我希望他们转到管理模块中的“我未找到”页面。由于某些原因,他们被注销并重定向回“登录”页面。
请参考以下示例项目(尝试转到/ admin,登录,然后将路径更改为/ admin / xyz,然后按Enter键): https://stackblitz.com/edit/angular-7tjyqx
此外,危机中心也发生了同样的事情,它不是受保护的模块。尝试转到/ crisis-center / xyz,您将被重定向回危机中心而不是危机-找不到页面
答案 0 :(得分:1)
这是因为针对延迟加载的模块,角度服务(AuthService)中的服务未作为单例共享。因此,每次您直接从地址栏中转到http://localhost:4200/admin/xyz时,都会创建一个新的服务实例,该实例将isLogged设置为false,然后将您引至Login页面。但是,如果您登录并访问 连结至http://localhost:4200/admin/xyz的routerLink,您将获得无页面
找到了,那是因为您在模块的同一服务实例中。