我的一条私人路线上有一个路线守卫,当守卫返回 false 时,它不再被调用。以下示例简化了如何重现这种情况。
当用户使用链接导航时:
<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;
}
}
但是,当用户再次单击该链接时,什么也没有发生。
为什么我需要这样的行为?我需要重复调用 guard 的原因是因为我必须显示 modal Do you want to login? YES/NO
。当用户点击no
我想留在页面上。但是当他后来决定再次导航时,我想让他再次登录。
有什么方法可以停止 angular2 缓存保护结果?