Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在浏览器中手动更改url使服务不再是单一的,即状态正在丢失_Angular_Angular Ui Router_Angular2 Routing_Angular Services - Fatal编程技术网

Angular 在浏览器中手动更改url使服务不再是单一的,即状态正在丢失

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栏或阻止

在我的应用程序中

我有loginComponent,UserService

默认情况下,用户将转到登录页面

在那里,他可以键入他的凭据,我正在进行API调用,并使用检索到的userdata填充服务类中的一个属性

在此之后,我将用户重定向到仪表板(现在服务工作正常。它有用户数据)

但现在,如果我去浏览URL栏并手动更改URL以登录,则应用程序正在加载loginComponent,服务中的数据已经丢失。(可能正在创建新的服务实例)


这是一只虫子吗。。。?或者我们可以摆脱它。

没有办法锁定url栏或阻止手动导航

但是,您可以尝试在
Angular
代码中捕捉此类问题,并警告访问者(使用弹出窗口)不要这样做。我找到了另一个可能的解决方案


但是你也可以使用(正如Kirk Larkin和Prasanna Sasne所提到的)来保存登录信息。

这不仅仅是创建一个新的服务实例,而是重新创建整个应用程序——就像重新启动应用程序一样。如果您需要数据持久化,您将需要考虑将其存储在Cookie、LookLoad等地方。这不是一个bug,这是角度行为的方式,它只是重新创建整个应用程序,因此导致在状态中丢失,为了保存数据,可以使用本地存储、cookie、会话。