[英]ObjectUnsubscribedError on router.navigate inside a subscribe of http post request
[英]router.navigate() inside .subscribe halts functionality of the application
我正在尝试将用户登录到我的应用程序,成功登录后,用户将被重定向到主页 ( /
)。
这里一切正常,用户被重定向到主页,但我无法通过单击主页上的任何链接进行导航。
但是,在检查了这个问题之后,我注意到,当我将this.router.navigate(['/'], { relativeTo: this.route })
移出login
方法(如下所示)的subscribe
块时,页面得到重定向到主页,所有功能似乎都运行良好。
我从subscribe
块调用this.router.navigate
的方式存在一些问题。 有人可以帮我发现发生了什么吗? 谢谢。
注意:我也在SO 上发现了一个类似的问题。 在本地分配router
的建议答案不起作用。 角度版本 - 11
login(pwd: any){
this.loginService.login(usrname,pwd).subscribe(
(response) =>
{
console.log("success executed");
this.router.navigate(['/'], { relativeTo: this.route }).then(x => console.log("????? "+x));
return;
},
(error) =>
{
console.log("ERRR == "+JSON.stringify(error));
}
);
}
更新
应用路由模块。
{ path: '', loadChildren: () => import('./home-page/home-page.module').then(m => m.HomePageModule) , pathMatch:"full"},
{
path: 'signup',
loadChildren: () => import('./Reg/Reg.module').then(m => m.RegModule)
},
路由模块
import { SignUpComponent } from './sign-up/sign-up.component';
const routes: Routes = [
{ path: '', component: SignUpComponent },
{ path: 'signin', component: SignInComponent },
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class RegRoutingModule { }
当用户决定登录应用程序时,他们会进入注册页面 ( SignUpComponent
),然后单击链接登录 ( SignInComponent
)。 这是一个延迟加载的模块。
Homepage 组件也是一个延迟加载的模块。
更新 2
主页路由模块
import { HomePageComponent } from './home-page.component';
const routes: Routes = [{ path: '', component: HomePageComponent },
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class HomePageRoutingModule { }
很可能是路由配置的问题,或者甚至是某些以意外方式运行的路由守卫的问题。
您是为HomeComponent
使用急切加载还是延迟加载? 显示配置路由的模块会很有帮助,我敢打赌问题出在那里。
另外,我很困惑为什么在导航时需要使用{ relativeTo: this.route }
。 理想情况下,此时您不需要任何路由范围。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.