我在我的私人路线之一有一个路线警卫,当警卫返回假时,它不再被调用。下面的例子简化了如何重现这种情况。多次呼叫angular2路线警卫
当用户浏览使用链接:
<a [routerLink]="['my-private-route']">Link</a>
保护被调用,我看到控制台和导航called
消息被取消(我在后卫回false
):
@Injectable()
export class CanActivateViaAuthGuard implements CanActivate {
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean>|Promise<boolean>|boolean {
console.log('called')
return false;
}
}
然而,当用户再次点击链接时,什么也没有发生。
为什么我需要这样的行为?我需要警惕被重复调用的原因是因为我必须显示模式Do you want to login? YES/NO
。当用户点击no
我想留在页面上。但是当他决定再次导航时,我想让他再次登录。
有没有什么办法可以阻止angular2缓存后卫结果?
使用的值请提供Plunker重现。我希望这也能工作。 –
@GünterZöchbauer有趣。我做了那个笨蛋,确实在那里工作。 https://plnkr.co/edit/17CBn14zPuyrAhVnS4pA我将研究我的代码如何不同。谢谢你:-) –
@GünterZöchbauer的区别是Angular 2.2.0 vs 2.1.2。看起来这个守卫缓存出现在2.2.0中。 –