【发布时间】:2017-02-02 20:51:29
【问题描述】:
我正在使用 AngularFire2。这就是我使用AuthGuard 服务的方式:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
this.af.auth.subscribe((auth) => {
if(auth == null) {
this.router.navigate(['/login']);
this.allowed = false;
} else {
this.allowed = true;
}
})
return this.allowed;
}
上述代码有效,除非我直接访问受保护的页面(我在浏览器中输入 URL),它不会在订阅解析为 true 后加载相应的组件。
在角度 1 中,保护路线是确保在路线加载之前先解决问题。
它出现在角度 2 中,路由加载(无论是真还是假,并且不等待来自线路的任何响应),因此当订阅值返回为真时,我必须去另一条路线,然后在它起作用之前回来。
在 Angular 2 中保护我的路由响应的正确方法是什么?
【问题讨论】:
标签: angular angular2-routing angular2-services angularfire2