Angular 在浏览器中手动更改url使服务不再是单一的,即状态正在丢失
在我的应用程序中 我有loginComponent,UserService 默认情况下,用户将转到登录页面 在那里,他可以键入他的凭据,我正在进行API调用,并使用检索到的userdata填充服务类中的一个属性 在此之后,我将用户重定向到仪表板(现在服务工作正常。它有用户数据) 但现在,如果我去浏览URL栏并手动更改URL以登录,则应用程序正在加载loginComponent,服务中的数据已经丢失。(可能正在创建新的服务实例)Angular 在浏览器中手动更改url使服务不再是单一的,即状态正在丢失,angular,angular-ui-router,angular2-routing,angular-services,Angular,Angular Ui Router,Angular2 Routing,Angular Services,在我的应用程序中 我有loginComponent,UserService 默认情况下,用户将转到登录页面 在那里,他可以键入他的凭据,我正在进行API调用,并使用检索到的userdata填充服务类中的一个属性 在此之后,我将用户重定向到仪表板(现在服务工作正常。它有用户数据) 但现在,如果我去浏览URL栏并手动更改URL以登录,则应用程序正在加载loginComponent,服务中的数据已经丢失。(可能正在创建新的服务实例) 这是一只虫子吗。。。?或者我们可以摆脱它。没有办法锁定url栏或阻止
这是一只虫子吗。。。?或者我们可以摆脱它。没有办法锁定url栏或阻止手动导航 但是,您可以尝试在
Angular
代码中捕捉此类问题,并警告访问者(使用弹出窗口)不要这样做。我找到了另一个可能的解决方案
但是你也可以使用(正如Kirk Larkin和Prasanna Sasne所提到的)来保存登录信息。这不仅仅是创建一个新的服务实例,而是重新创建整个应用程序——就像重新启动应用程序一样。如果您需要数据持久化,您将需要考虑将其存储在Cookie、LookLoad等地方。这不是一个bug,这是角度行为的方式,它只是重新创建整个应用程序,因此导致在状态中丢失,为了保存数据,可以使用本地存储、cookie、会话。