gpt4 book ai didi

导航后 Angular 2 View 没有响应

转载 作者:搜寻专家 更新时间:2023-10-30 21:15:16 24 4
gpt4 key购买 nike

我有一个使用 angular 2 的 api 驱动的应用程序。我创建了一个扩展 angular2-sails 的全局服务,如果对调用的响应是 401 PLEASE_LOGIN,则将用户重定向到注册组件。

问题是当我重定向到注册组件时, View (正确加载)不响应用户操作。没有错误,例如,当我单击一个按钮时,组件方法正在调用和工作,但 View 只是没有反应或更新。

我的设置如下:我的主页组件模板引用了 user-sidebar.component。这个侧边栏组件有一个 ngOnInit 方法,它向后端询问经过身份验证的用户。当没有经过身份验证的用户时,加载它的服务重定向到/signup

我的 user-sidebar.component ngOnInit 方法:

ngOnInit(): void 
{
this._authService
.me()
.subscribe(
(resData: Object) => { this.user = resData.data; },
(err: any) => { console.log(err); }
);
}

AuthService .me() 方法

me(): any 
{
return this._appService.get('/me');
}

我的 app.service 获取方法:

get(path: string, data: Object): Observable
{
return this._sailsService.get(path, data)
.catch(this.handleError.bind(this));
}

public handleError(err: Response): void
{
// If the server response with unhautorized, redirect to login / signup page
if(err.statusCode == 401 && err.error == 'PLEASE_LOGIN')
{
this._router.navigate(['/signup']);
}

return Observable.throw(err);
}

不确定是 Angular 错误还是我的代码,但我的研究没有给出任何结果。

最佳答案

似乎变化检测不起作用

您可以使用手动调用更改检测

constructor(private zone:NgZone) {}

然后运行

this.zone.run(() => this._router.navigate(['/signup']));

实际上,我不知道为什么没有自动调用变化检测。
这可能是因为在错误处理程序中调用了 router.navigate,但我看不出这会导致它的充分理由。

关于导航后 Angular 2 View 没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41381421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com