我有一个使用Angular2的API驱动的应用程序。我创建了一个扩展angular2 sails的全局服务,如果对调用的响应是401 PLEASE_LOGIN
,则该服务会将用户重定向到注册组件。
问题是,当我重定向到注册组件时,视图(正确加载tho)不响应用户操作。没有错误,组件方法正在调用并在我单击某个按钮时工作,但是视图没有反应或更新。
我的设置如下:我的主组件模板引用了一个user-sidebar.component。这个侧边栏组件有一个ngoninit方法,它向后端请求经过身份验证的用户。当没有经过身份验证的用户时,加载它的服务将重定向到/注册
我的用户侧栏.component ngonit方法:
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方法:
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);
}
我不确定是角型错误还是我的代码,但我的研究没有给出任何结果。
最佳答案
似乎变化检测不起作用
您可以使用
constructor(private zone:NgZone) {}
然后跑
this.zone.run(() => this._router.navigate(['/signup']));
实际上,我不知道为什么没有自动调用更改检测。
这可能是因为在错误处理程序中调用了
router.navigate
,但我看不出这会导致它的很好的原因。关于angular - 导航后Angular 2 View 无响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41381421/