首页 > 解决方案 > 在 http post 请求的订阅中,router.navigate 上的 ObjectUnsubscribedError

问题描述

在收到 http post call 的响应后,我试图导航到一个页面。路由器导航需要响应对象,因为它基于 response.id 进行路由,如下面的代码所示。

user.component.ts:

this._userService.createUser(data).subscribe(response => {
    this.router.navigate(['userEdit/' + response.id]);
});

服务内部:

createUser(userdata: User): Observable<User> {
    return this._httpClient.post<User>(url, userData, this._httpOptions);
}

app.routing.ts 内部

{path: 'userEdit/:userId', component: UserEditComponent}

它正确导航到“userEdit/10”路径,但在控制台上它给出了 ObjectUnsubscribedError。

该应用程序运行良好,但我想了解为什么会出现此错误。

控制台错误:

控制台错误截图

标签: angularngx-bootstrap

解决方案


我通过堆栈跟踪意识到错误是由 ngx-bootstrap 模态指令引发的。

modal.directive.js:276

我在 createUser 函数调用之前隐藏了模态,并且由于 router.navigate 它被破坏并且引发了错误。

通过在 modal.onHidden.subscribe() 中添加 createUser 函数调用来修复它


推荐阅读