Ada*_*m S 2 typescript angular2-routing angular
我有一个使用角度2的api驱动应用程序.我创建了一个扩展angular2-sails的全局服务,如果对调用的响应是401 PLEASE_LOGIN,则将用户重定向到注册组件.
问题是当我重定向到注册组件时,视图(正确加载)不响应用户操作.没有错误,组件方法在我调用和工作时,例如,单击一个按钮,但视图只是没有反应或更新.
我的设置如下:我的主组件模板引用了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); }
);
}
Run Code Online (Sandbox Code Playgroud)
AuthService .me()方法
me(): any
{
return this._appService.get('/me');
}
Run Code Online (Sandbox Code Playgroud)
我的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);
}
Run Code Online (Sandbox Code Playgroud)
不确定是否有角度的错误或我的代码,但我的研究没有给出任何结果.
Gün*_*uer 10
似乎变化检测不起作用
您可以使用手动调用更改检测
constructor(private zone:NgZone) {}
Run Code Online (Sandbox Code Playgroud)
并运行
this.zone.run(() => this._router.navigate(['/signup']));
Run Code Online (Sandbox Code Playgroud)
实际上,我不知道为什么不会自动调用更改检测.
它可能是因为router.navigate在错误处理程序中调用,但我没有看到为什么会导致它的一个很好的理由.
| 归档时间: |
|
| 查看次数: |
1392 次 |
| 最近记录: |