在 Angular 中的模块内显示单独的 404 未找到页面
Displaying a separate 404 not found page inside of a module in Angular
在我的 Angular 应用程序中,我想要两个单独的“未找到页面”页面。
在应用程序根目录中,有一个以防用户执行以下操作:http://localhost:4200/xyz。这很好。
但是,我在我的管理模块中添加了一个,上面有一个 AuthGuard。如果用户已登录并导航到 http://localhost:4200/admin/xyz,我希望他们转到管理模块中我未找到的页面。由于某种原因,他们正在注销并重定向回登录页面。
请参考下面的示例项目(尝试进入 /admin,登录,然后将路径更改为 /admin/xyz 并回车):
https://stackblitz.com/edit/angular-7tjyqx
另外,同样的事情发生在 crisis-center 上,它不是一个受保护的模块。尝试转到 /crisis-center/xyz,您将被重定向回危机中心而不是危机 - 找不到页面
这是因为 angular (AuthService) 中的服务不会作为延迟加载模块的单例共享。因此,每次您直接从地址栏转到 http://localhost:4200/admin/xyz 时,都会创建一个将 isLogged 设置为 false 的新服务实例,然后您将被带到登录页面。但是,如果您登录并访问
routerLink 到 http://localhost:4200/admin/xyz,你会得到没有页面
找到了,那是因为你在模块的同一个服务实例中。
在我的 Angular 应用程序中,我想要两个单独的“未找到页面”页面。
在应用程序根目录中,有一个以防用户执行以下操作:http://localhost:4200/xyz。这很好。
但是,我在我的管理模块中添加了一个,上面有一个 AuthGuard。如果用户已登录并导航到 http://localhost:4200/admin/xyz,我希望他们转到管理模块中我未找到的页面。由于某种原因,他们正在注销并重定向回登录页面。
请参考下面的示例项目(尝试进入 /admin,登录,然后将路径更改为 /admin/xyz 并回车): https://stackblitz.com/edit/angular-7tjyqx
另外,同样的事情发生在 crisis-center 上,它不是一个受保护的模块。尝试转到 /crisis-center/xyz,您将被重定向回危机中心而不是危机 - 找不到页面
这是因为 angular (AuthService) 中的服务不会作为延迟加载模块的单例共享。因此,每次您直接从地址栏转到 http://localhost:4200/admin/xyz 时,都会创建一个将 isLogged 设置为 false 的新服务实例,然后您将被带到登录页面。但是,如果您登录并访问 routerLink 到 http://localhost:4200/admin/xyz,你会得到没有页面
找到了,那是因为你在模块的同一个服务实例中。